このドキュメントでは、Amazon Web Services (AWS)を使用してWhatsApp Business APIをデプロイする方法を示しています。プロセスは次の2つの主なステップで構成されます。
設定が完了したら、クライアントのアップグレードを行うこともできます。WebappとCoreAppの両方を再起動する必要がある場合は、これらのステップに従ってください。
このドキュメントでは、より高度で安定したメッセージングスループットのテストが行われた新しいAWSテンプレートについて順を追って説明します。古いAWSテンプレートをお探しなら、AWSアーカイブをご覧ください。
始める前に、次のことを行う必要があります。
有効なAWSアカウントを設定する必要があります。また、AWSでの作業について十分理解している必要があります。WhatsAppには、WhatsApp Business APIクライアントを簡単にデプロイするためのCloudFormationテンプレートが用意されています。詳しくは、AWSの使用開始リソースセンターを参照してください。
WhatsApp Business APIテンプレートで作成されたEC2インスタンスにアクセスするための新しいキーペアを作成する必要があります。以前に作成したキーペアを使用することもできます。EC2インスタンスでのキーペアの作成と使用に関する情報については、Amazon EC2キーペアのドキュメントをご覧ください。
キーペアは、WhatsApp Business APIをデプロイする地域を使って作成する必要があります。
WhatsApp Business APIクライアントは、CentOS 7イメージ(AWS Marketplaceで入手可能)を使用します。テンプレートを使用する前に、利用規約を確認して承認する必要があります。規約を承認しないと、テンプレートを作成できません。
CentOS 7 AMIイメージを確認して承認するには、以下の手順に従います。
WhatsApp Business APIテンプレートはEFSリソースタイプを使用しますが、このタイプは一部のAWS地域では使用できません。現在サポートされている地域は次のとおりです。
初期テストによって、すべての地域で使用できる代替オプションを提供可能かどうかがWhatsAppにより判断されます。
いいえ、FacebookはKOPSをサポートしていません。ECSに基づくAWSソリューションはサポートしています。一般的なKubernetes minikubeのセットアップにも対応しています。
AWSアカウントに登録すると、通常はVirtual Private Cloud (VPC)ネットワークが作成されます。また、エンタープライズビジネスに固有のカスタマイズやアクセスコントロールの制限がいくつか必要になる場合があります。
VPCネットワークインフラストラクチャがすでに作成されている場合は、このステップをスキップできます。作成されていない場合は、以下のテンプレートを使用してAWS上のネットワークインフラストラクチャを作成できます。
ネットワークテンプレートは参照目的でのみ提供されています。特定のニーズに合わせて変更することができます。
ネットワークテンプレートをデプロイするには、次のようにします。
https://wa-biz-cfn.s3.amazonaws.com/wa_ent_net.yml
と入力して[次へ]をクリックするか、名前 | 説明 |
---|---|
| 必須。 作成するスタックの名前。 |
名前 | 説明 |
---|---|
| 必須。 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文字以下にする必要があります。
|
名前 | 説明 |
---|---|
| 任意。 高可用性機能を有効にします。 デフォルト: |
| 必須。 1秒あたりに送信するメッセージの数。
|
| 必須。 主に送受信したいメッセージタイプ。
|
| 任意。 インスタンスモニタリングのために、各CoreAppホストにノードエクスポーターをインストールします。 デフォルト: |
名前 | 説明 |
---|---|
| 必須。 ネットワーク設定ステップで作成されたネットワークCloudFormationスタックの名前。 |
| 必須。 選択されたサブネットの数。 現在、デプロイメントがECSタスクをすべてのホストに均等に配布することをサポートするサブネットは2つのみです。 |
| 必須。 現在、インターネットと接続しているロードバランサー(一般公開されている)のみをサポートしています。不必要なアクセスをオフにするために、APIスタック作成後にセキュリティグループを変更してください。 |
名前 | 説明 |
---|---|
| 必須。 EC2インスタンスへのアクセスに使用できるキーペア(必要な場合)。 |
| 任意。 これは将来の証明と試験的なWhatsApp Business APIクライアントをサポートするためのものです。ほとんどの場合、デフォルト値を利用できます。 |
| 必須。 常に、最新の安定バージョン(最新バージョンについては変更履歴でご確認ください)を使うことをおすすめします。 WhatsApp Business APIクライアントバージョンは、明示的に記載されていない限り、常に"v"で始まります。正しくないバージョンを使用すると、スタックの作成は失敗します。 |
| 必須。 本番の作業負荷用に32GB以上を選ぶことをおすすめします。 |
名前 | 説明 |
---|---|
| 任意。 データベースに設定情報を保存することを可能にします。 |
| 任意。 既存のデータベースホスト名。 |
| 必須。 データベースへのアクセスに使われる管理者名。 |
| 必須。 データベースへのアクセスに使われる管理者パスワード。 データベースパスワードには?{}&~!()^/"@のいずれの文字も使用できません。 |
| 必須。 データベースバックエンドにアクセスするためのポート番号。 |
| 任意。 ウェブコンテナのデータベース接続を保持するかどうかを示します。 デフォルト: |
| 任意。 アイドル状態の接続をデータベースが閉じるまでの時間(ミリ秒)。 |
名前 | 説明 |
---|---|
| 任意。 コンテナログ用のログドライバー。 |
| 任意。 コンテナログファイルの最大サイズ(MB単位)で、このサイズになるとファイルがローテーションされます。 1以上250以下の値にします。デフォルト: 50。 |
| 任意。 コンテナあたりの保持するログファイルの最大数。 1以上30以下の値にします。デフォルト: 7。 |
| 任意。 CloudWatchにログを保持する日数。 デフォルト: |
名前 | 説明 |
---|---|
| 未使用。 このパラメーターは空のままにしておいてください。 |
名前 | 説明 |
---|---|
| 任意。 デフォルトでは、AWSサービスキー(Default-Keyオプション)を使ってDB & EFSデータを保存時に暗号化します。その他のオプションは次のとおりです。
|
| 任意。 データの暗号化に使用するKMSキーのIDを指定できます。User-Provided-Keyオプションが選択されていない場合は、空白のままにしてください。 |
| 任意。 デフォルトでは、データベースに転送されるデータは暗号化されます。これは現在、Coreappにのみ適用されます。Webappの暗号化はまだサポートされていません。また、新しいデータベースエンジンでは、このオプションが無効になっている場合でも、Coreappは暗号化を実行します。ただし、サーバー証明書(ID)の検証は行いません。 |
| 任意。 デフォルト値にはRDS証明書バンドルが含まれています。RDS以外のデータベースを使用する場合、適切なCA証明書バンドルを提供するか、空白のままにしておくことができます。デフォルト値でデータベースとの安全な接続を十分に確保できます。 |
| 任意。 データベース接続のクライアント証明書 |
| 任意。 データベース接続のクライアントキー |
これらのパラメーターは、Grafanaダッシュボードがモニタリング目的でアプリ指標を取得するために必要です。
名前 | 説明 |
---|---|
| 必須。 WhatsApp Business APIのユーザーネームを指定します。 |
| 必須。
|
名前 | 説明 |
---|---|
| 必須。 Grafanaダッシュボードのスタック作成時にログインパスワードとして使用されるパスワードを指定します。 |
| 任意。 メールアラートの設定にSMTPが有効かどうかを示します。有効な値: 無効の場合は デフォルト: |
| 任意。 メールアラートで使用されるSMTPホスト。例: smtp.gmail.com:465。 |
| 任意。 メールアラートで使用されるSMTPユーザー名を指定します。 |
| 任意。 メールアラートで使用されるSMTPパスワードを指定します。 |
テンプレートの作成に成功すると、以下のパラメーターが表示されます。
デフォルトで、スタックによって作成されたセキュリティルールではすべてのトラフィックが、EC2インスタンス(SSH経由で)、APIエンドポイントとGrafanaダッシュボード(HTTPS経由で)、cadvisorとPrometheusコンテナに到達できるようにします。セキュリティ上の理由から、不要なアクセスを閉鎖することを強くおすすめします。このセクションでは、例として、SSHセキュリティルールを変更する手順を説明します。SSHアクセスは、必ず信頼できるトラフィックのみに制限するべきです。
"<stackName>-ms-xxx-EcsSecurityGroup"
を含むすべてのセキュリティグループでこの手順を繰り返し、モニタリングスタックのSSHアクセスを制限します。
WhatsApp Business APIクライアントが正常にデプロイされたら、動作するように設定する必要があります。
電話番号の登録に関する詳細情報については、電話番号ガイドを参照してください。
base64エンコードされた証明書を、WhatsAppマネージャの電話番号タブにあるFacebookビジネスマネージャのWhatsAppアカウントからダウンロードします。
base64エンコードされた証明書があり正しい電話番号を選択している場合は、account
ノードからWhatsApp Business APIクライアントを登録する必要があります。詳細については、登録のドキュメントをご覧ください。
電話番号がテキストメッセージを受信できる場合は、登録コードの取得にSMSによる方法を使います。
WhatsAppから登録コードをすでに受け取っている場合は、この手順をスキップできます。
スタックが作成された後、求めるスループットを達成するためには、shards
API呼び出しを使用してアクティブなCoreappのインスタンスを増す必要があります。シャードの数は、スタックの出力セクションにあります。
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クライアントは、作成時にデフォルトで自己署名証明書を生成します。WhatsApp Business APIクライアントのエンドポイントを検証し、証明書の信頼性に関する警告が出されないようにするには、自己署名証明書の生成に使用する認証局(CA)証明書が必要になる場合があります。
CA証明書をダウンロードしローカルに保管して、証明書の信頼性に関する警告が出されないようにするか、独自のCA証明書をアップロードできます。詳細については、certificate
ノードのドキュメントをご覧ください。
AWSのデプロイメントでは、SSL証明書はロードバランサーのホスト名を使用して作成されます。アクセス時にホスト名ではなくIPアドレスが使用される場合にも、警告が出されます。
WhatsAppの将来のリリースでは、お客様が用意したSSL証明書を構成できるようになる予定です。
設定および登録ステップが成功すると、WhatsApp Business APIクライアントの基本的な機能を検証するためにメッセージを送受信することができます。これは、メッセージのドキュメントで詳しく説明されています。
メッセージの受信が成功すると、WhatsApp Business APIクライアントは、ステップ3で設定されたWebhookにメッセージステータス/詳細をPOST
します。
メッセージが正常に受信されたら、すべての設定が完了です。利用可能なAPIのエンドポイントに関する詳細については、リファレンスドキュメントを参照してください。
WhatsApp Business APIクライアントを再起動するには、ECSコンソール(例: https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters)で次のようにします。
これでWebappとCoreAppの両方が停止します。少し経ってから、AWSインフラストラクチャはWebappとCoreAppの両方を再起動します。
ダウンタイムは約1~2分と予測されます。
CloudFormationスタックを直接更新すると、データベースが破壊され再作成される可能性があります。データを失わないために、次のセクションの手動ステップに従ってシステムを更新することを強くおすすめします。
このセクションでは、WhatsApp Business APIクライアントとCloudFormation (CFN)テンプレートの両方をアップグレードする方法について順を追って説明します。アップグレードを実行するとダウンタイムが生じるので、この間はメッセージを送信しないでください。アップグレードが完了してから、メッセージ送信を再開するようにしてください。
CFNテンプレートとWhatsApp Business APIクライアントのバージョンを、次のようにして同時にアップグレードできます。
クイックアップグレード確認:テキストメッセージを送信し、APIレスポンスに正しいバージョン番号(つまり、新しいバージョン)が含まれていることを確認してください。また、受信者がメッセージを受信することも確認してください。
ビジネスは一般的に、時間制限のあるキャンペーン用に高いスループット環境を整え、キャンペーン以外の期間には低コスト環境を維持することを望んでいます。このセクションでは、コストを節約するためにAWSの設定を手動でスケールダウンする方法をいくつか提案します。
重要: ダウンタイムがあることにご注意ください。ダウンタイムは推定5分から15分ほどになります。アプリ設定のバックアップやデータベースのバックアップなど、すべてのDevOpsベストプラクティスに従うようにしてください。
2
に更新します。c5.large
に置き換えることができます。
c5.large
に更新してから、[テンプレートバージョンを作成]を選択します。
r5.xlarge
に更新します。
3
に更新します。3
に更新します。2
に更新します。2
に更新します。2
にリセットします。