我们将弃用本地 API。请参阅我们的本地 API 弃用文档,了解弃用详情以及如何迁移到我们的下一代云端 API。
开始之前,您需要完成以下操作:
您需要设置有效的 AWS 帐户,并熟练使用 AWS。WhatsApp 提供 CloudFormation 模板,可用于轻松部署 WhatsApp Business API 客户端。如需了解详情,请访问 AWS 入门资源中心。
您需要新建密钥对,用以访问使用 WhatsApp Business API 模板创建的 EC2 实例。您还可使用之前创建的密钥对。请参阅 Amazon EC2 密钥对文档,了解通过 EC2 实例创建和使用密钥对的相关信息。
创建密钥对时,您需要使用 WhatsApp Business API 的目标部署区域。
WhatsApp Business API 客户端使用 CentOS 9 映像(可在 AWS Marketplace 中获取)。使用模板前,请先查看并接受条款和条件。如不接受这些条款,您将无法创建模板。
如要查看并接受 CentOS 9 AMI 映像,请执行以下操作:
WhatsApp Business API 模板使用 EFS 资源类型,该资源类型并非在所有 AWS 区域都可用。因此,目前仅支持下列区域:
WhatsApp 将根据初始测试决定我们是否可以提供一个在所有区域皆可用的替代选项。
没有,我们不支持 KOPS。但我们支持基于 ECS 的 AWS 解决方案。同时也提供了一份通用的 Kubernetes minikube 设置指南。
在您注册 AWS 帐户时,系统通常会创建虚拟私有云 (VPC) 网络。此外,企业可能还需要根据特定业务,设置一些自定义项目和访问控制限制。
如果您已经创建 VPC 网络基础架构,可以跳过此步骤。如果尚未创建,则可以使用以下模板在 AWS 上创建网络基础架构。
此网络模板仅供参考,您可以根据具体需求加以修改。
如要部署网络模板,请按照以下步骤操作:
名称 | 描述 |
---|---|
| 必要。 所创建堆栈的名称。 |
名称 | 描述 |
---|---|
| 必要。 用于创建 VPC 的可用区 (AZ)。 |
| 必要。 选择的可用区数量。 |
名称 | 描述 |
---|---|
| 必要。 此 VPC 的 IP 地址范围 (CIDR)。 |
| 必要。 VPC 租赁 |
名称 | 描述 |
---|---|
| 必要。 公有子网的 IP 地址范围 (CIDR) |
| 必要。 公有子网的 IP 地址范围 (CIDR) |
| 非必要。 可用区数量超过 2 个时,此参数为必要项。 |
| 非必要。 可用区数量超过 3 个时,此参数为必要项。 |
名称 | 描述 |
---|---|
| 必要。 选项: |
| 酌情使用。 将私有子网创建设为 |
| 酌情使用。 将私有子网创建设为 |
| 酌情使用。 将私有子网设为 |
| 酌情使用。 将私有子网创建设为 |
在 AWS 上部署 WhatsApp Business API 堆栈之前,您需要首先将引用的子堆栈的配置文件上传到您拥有读取权限的 S3 存储桶。
WhatsApp Enterprise 是主模板,可用于创建 WhatsApp Business API 客户端所需的全部资源(网络除外)。如前所述,如有需要,您也可以使用此模板创建数据库资源。
如要部署 WhatsApp Business API 客户端,请按照以下步骤操作:
名称 | 描述 |
---|---|
| 必要。 所创建堆栈的名称。 堆栈名称不得超过 22 个字符。注意:在 ap-southeast-1、ap-southeast-2、ap-northeast-1 或 ap-northeast-2 区域进行部署时,堆栈名称不得超过 8 个字符。 如果 |
名称 | 描述 |
---|---|
| 非必要。 启用高可用性功能。 默认值: |
| 必要。 您希望每秒发送的消息数量。 根据此选项与 |
| 必要。 您希望发送和接收的主要消息类型。 根据此选项与 |
| 非必要。 在每个核心应用主机上安装 node-exporter,以便监控实例。 默认值: |
名称 | 描述 |
---|---|
| 必要。 通过网络设置步骤创建的网络 CloudFormation 堆栈的名称。 |
| 必要。 所选择子网的数量。 目前,我们仅支持 2 个子网部署,在所有主机上均匀分配 ECS 任务。 |
| 必要。 目前,我们仅支持面向互联网的负载均衡器,该负载器对公众可见。请在创建 API 堆栈后修改安全小组,关闭非必要的访问权限。 |
名称 | 描述 |
---|---|
| 必要。 用于访问 EC2 实例的适当密钥对(如有需要)。 |
| 非必要。 此选项具有前瞻性,将用于支持试验性 WhatsApp Business API 客户端。默认值应该适用于大部分情况。 |
| 必要。 始终建议使用最新稳定版本(查看更新日志,以了解最新版本)。 除非另有明确说明,否则 WhatsApp Business API 客户端版本始终以“v”开头。使用错误版本会导致堆栈创建失败。 |
| 必要。 建议为生产工作负载选择至少 32 GB。 |
名称 | 描述 |
---|---|
| 非必要。 启用在数据库中存储配置信息的功能。 |
| 非必要。 现有数据库主机名。 |
| 必要。 用于访问数据库的管理员名称。 |
| 必要。 用于访问数据库的管理员密码。 数据库密码不应包含以下任何字符:?{}&~!()^/"@ |
| 必要。 用于访问数据库后端的端口编号。 |
| 非必要。 指示是否为 Web 容器固定数据库连接。 默认值: |
| 非必要。 连接的空闲时长超过此时间(以毫秒为单位)后,数据库便会关闭该连接。 |
名称 | 描述 |
---|---|
| 非必要。 容器日志的日志记录驱动程序。 |
| 非必要。 轮替容器日志文件前,该文件的大小上限(以 MB 为单位)。 允许的值介于 1 到 250 之间(二者均包括在内)。默认值:50。 |
| 非必要。 每个容器保存的日志文件数量上限。 允许的值介于 1 到 30 之间(二者均包括在内)。默认值:7。 |
| 非必要。 在 CloudWatch 中保留记录的天数。 默认值: |
名称 | 描述 |
---|---|
| 不使用。 将此参数留空。 |
名称 | 描述 |
---|---|
| 非必要。 默认情况下,AWS 服务密钥(Default-Key 选项)用于加密 DB 和 EFS 静态数据。其他选项包括:
|
| 非必要。 您可以提供 KMS 密钥编号,以用于加密数据。如果未选择 User-Provided-Key 选项,请将此项留空。 |
| 非必要。 默认情况下,传输到数据库的数据会经过加密。当前此选项仅适用于核心应用,不支持网页应用加密。此外,借助新的数据库引擎,即便禁用此选项,核心应用也可以执行加密,但不会进行服务器证书(身份)验证。 |
| 非必要。 默认值包含 RDS 证书文件包。如果所使用的数据库并非 RDS 数据库,您可以提供相应的 CA 证书文件包或将此字段留空。使用默认值便足以创建与数据库的安全连接。 |
| 非必要。 数据库连接的客户端证书 |
| 非必要。 数据库连接的客户端密钥 |
在 Grafana 面板出于监控目的检索应用程序指标时,这些参数均为必要项。
名称 | 描述 |
---|---|
| 必要。 指定 WhatsApp Business API 帐号。 |
| 必要。 指定 |
名称 | 描述 |
---|---|
| 必要。 在创建堆栈时,指定用作 Grafana 面板登录密码的密码。 |
| 非必要。 指示是否启用 SMTP,以设置邮件提醒。有效值包括: 默认值: |
| 非必要。 邮件提醒中使用的 SMTP 主机。例如 smtp.gmail.com:465。 |
| 非必要。 指定邮件提醒中使用的 SMTP 帐号。 |
| 非必要。 指定邮件提醒中使用的 SMTP 密码。 |
成功创建模板后,系统会显示以下参数:
默认情况下,堆栈所创建的安全规则允许所有流量通过 SSH 到达 EC2 实例,通过 HTTPS 到达 API 端点和 Grafana 面板,以及到达 cAdvisor 和 Prometheus 容器。出于安全考虑,我们强烈建议关闭非必要的访问权限。此部分将以更新 SSH 安全规则为例展示操作步骤。您应始终将 SSH 访问权限限制为仅您信任的流量。
"<stackName>-ms-xxx-EcsSecurityGroup"
的安全小组重复执行这些更改,以便限制通过 SSH 访问监控堆栈。
成功部署 WhatsApp Business API 客户端后,需要对其进行配置,以使其投入运行。
请参阅电话号码指南,详细了解电话号码注册。
请前往 WhatsApp 管理工具,打开电话号码选项卡,在 Facebook 商务管理平台中下载 WhatsApp 帐户的 base64 编码证书。
选择正确的电话号码并获取 base64 编码证书后,需要通过 account
节点注册 WhatsApp Business API 客户端。详情请参阅注册文档。
如果电话号码可以接收短信,请使用短信获取注册码。
如果您已收到 WhatsApp 发来的注册码,则可跳过此步。
创建堆栈后,您需要使用 shards
API 调用增加活跃核心应用实例的数量,以达到所需吞吐量。分片数量位于堆栈的输出部分。
如需了解 WhatsApp Business API 网络回调及其他参数的配置,请参阅应用程式设置文档。为了实现稳定的吞吐量,建议使用以下应用程式设置。
{ "settings": { "application": { "callback_backoff_delay_ms": 3000, "callback_persist": true, "db_garbagecollector_enable": false, # change this to true when there are no ongoing messaging campaigns "heartbeat_interval": 5, "max_callback_backoff_delay_ms": 900000, "media": { "auto_download": [ "document", "image", "video", "voice", "sticker", "audio" ] }, "notify_user_change_number": true, "pass_through": false, "sent_status": true, "show_security_notifications": false, "skip_referral_media_download": false, "unhealthy_interval": 30, "wa_id": "12245552741", "webhooks": { "max_concurrent_requests": 24, "message": { "delivered": true, "read": true, "sent": true }, "url": "<YOUR_WEBHOOK_SERVER_URL>" } } }, "meta": { "api_status": "stable", "version": "2.41.3" } }
在创建时 WhatsApp Business API 客户端时,该客户端会默认生成自签名证书。您可能需要使用用于生成自签名证书的认证机构 (CA) 证书来验证 WhatsApp Business API 客户端的端点,并避免出现证书信任警告。
您可以下载 CA 证书并将其存储在本地设备,以免出现证书信任警告,或者您也可以上传自己的证书。详情请参阅 certificate
节点文档。
在 AWS 部署中,系统使用负载均衡器主机名创建 SSL 证书。如果使用 IP 地址而非主机名访问,系统仍会发出警告。
在未来版本中,WhatsApp 将支持配置客户提供的 SSL 证书。
完成配置和注册步骤后,您可以收发消息,以验证 WhatsApp Business API 客户端的基本功能。详情请参阅消息文档。
成功收到消息后,WhatsApp Business API 客户端会通过 POST
向第 3 步中配置的 Webhooks 发送消息状态或详情。
如果您的消息被成功接收,那么恭喜您,您已经全部准备就绪!请参阅参考文档,进一步了解可用的 API 端点。
如要重新开启 WhatsApp Business API 客户端,请前往 ECS 控制台(例如 https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters),然后执行以下操作:
此操作将同时停止网页应用和核心应用。不久后,AWS 基础架构会同时重启网页应用和核心应用。
停机时间预计为 1 至 2 分钟。
直接更新 CloudFormation 堆栈可能会导致数据库被摧毁并重建。我们强烈建议您按照下一部分中的手动步骤更新系统,以免丢失数据。
此部分将介绍如何同时升级 WhatsApp Business API 客户端以及 CloudFormation (CFN) 模板。执行升级会导致停机,因此请勿在此期间发送消息,待升级完成后再发送。
按照以下步骤操作,您可以同时升级 CFN 模板和 WhatsApp Business API 客户端版本:
快速确认升级:发送文本消息,确认 API 响应是否包含正确的版本号(即新版本)。同时确认接收者已收到消息。
企业通常希望为有时间限制的营销活动设置高吞吐量环境,并且希望在非营销活动期间保持环境以低成本运行。此部分针对如何手动减少 AWS 设置以节省成本提供了建议。
注意事项:需要提醒的是,这期间会出现停机状况。预计停机时间可能为 5 到 15 分钟。请务必遵循所有 DevOps 最佳实践,如应用程序设置备份和数据库备份。
2
。c5.large
选项。
c5.large
,然后选择 Create template version(创建模板版本)。
r5.xlarge
。
3
。3
。2
。2
。2
。