Мы прекращаем поддержку локального API. Подробные сведения и информацию о том, как перейти на облачный API нового поколения, см. в документе Упразднение локального API.
В этом документе рассказывается, как развернуть WhatsApp Business API на платформе Amazon Web Services (AWS). Процесс состоит из двух основных шагов:
После настройки можно обновить клиент. Если вам потребуется перезапустить Webapp и CoreApp, следуйте этим инструкциям.
В этом документе представлен новый шаблон AWS, который мы протестировали на более высокую и стабильную пропускную способность обмена сообщениями. Если вам нужен предыдущий шаблон AWS, обратитесь к архиву.
Прежде чем начать:
Вам необходимо настроить действительный аккаунт AWS и ознакомиться с принципами работы с AWS. В WhatsApp есть шаблоны CloudFormation, которые помогают легко развернуть клиент WhatsApp Business API. Дополнительную информацию см. в Центре ресурсов по началу работы с AWS.
Для доступа к экземпляру EC2, созданному шаблоном WhatsApp Business API, необходимо создать пару ключей. Можно также использовать пару ключей, созданную ранее. Информацию о создании пар ключей и их использовании с экземпляром EC2 см. в документации по парам ключей Amazon EC2.
Пару ключей необходимо создавать для региона, для которого вы планируете развернуть WhatsApp Business API.
Клиент WhatsApp Business API использует образ CentOS 9 (он доступен в каталоге AWS Marketplace). Перед использованием шаблона прочтите и примите условия и положения. Если этого не сделать, создать шаблон не удастся.
Чтобы прочесть и принять условия использования образа AMI CentOS 9, выполните следующие действия:
Шаблоны WhatsApp Business API используют тип ресурсов EFS, который доступен не во всех регионах AWS. В связи с этим поддерживаются только следующие регионы:
По результатам первоначального тестирования специалисты WhatsApp решат, сможем ли мы предоставить альтернативный вариант, доступный во всех регионах.
Нет. Мы не поддерживаем KOPS. Мы предлагаем поддержку решения AWS на основе ECS. Также можно воспользоваться руководством по настройке Kubernetes Minikube.
При регистрации аккаунта AWS обычно создается виртуальная частная облачная сеть (Virtual Private Cloud, VPC). Кроме того, может потребоваться настройка определенных параметров и ограничений доступа, связанных со спецификой компании.
Если сетевая инфраструктура VPC уже создана, этот шаг можно пропустить. В противном случае для ее создания на платформе AWS можно использовать указанный ниже шаблон.
Сетевой шаблон предлагается исключительно в качестве примера. При необходимости вы можете изменить его.
Развертывание шаблона сети:
Имя | Описание |
---|---|
| Обязательный параметр. Имя создаваемого стека. |
Имя | Описание |
---|---|
| Обязательный параметр. Зоны доступности для создания VPC. |
| Обязательный параметр. Количество выбранных зон доступности. |
Имя | Описание |
---|---|
| Обязательный параметр. Диапазон IP-адресов (CIDR) для этой VPC. |
| Обязательный параметр. Режим владения VPC. |
Имя | Описание |
---|---|
| Обязательный параметр. Диапазон IP-адресов (CIDR) для общедоступных подсетей. |
| Обязательный параметр. Диапазон IP-адресов (CIDR) для общедоступных подсетей. |
| Необязательный параметр. Обязателен, если количество зон доступности превышает 2. |
| Необязательный параметр. Обязателен, если количество зон доступности превышает 3. |
Имя | Описание |
---|---|
| Обязательный параметр. Возможные значения: |
| Зависит от условий. Требуется, если для флага создания частной подсети установлено значение |
| Зависит от условий. Обязателен, если для флага создания частной подсети установлено значение |
| Зависит от условий. Обязателен, если для флага создания частной подсети установлено значение |
| Зависит от условий. Обязателен, если для флага создания частной подсети установлено значение |
Перед развертыванием стека 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 символов. Если длина |
Имя | Описание |
---|---|
| Необязательный параметр. Включает функцию High Availability. Значение по умолчанию: |
| Обязательный параметр. Количество сообщений в секунду. Выбор и настройка ресурсов сервера и базы данных происходит автоматически в соответствии с нужной пропускной способностью для выбранного типа сообщений |
| Обязательный параметр. Основной тип сообщений, которые вы планируете отправлять и получать. Выбор и настройка ресурсов сервера и базы данных происходит автоматически в соответствии с нужной пропускной способностью |
| Необязательный параметр. Устанавливает node-exporter в каждом узле CoreApp для отслеживания экземпляра. Значение по умолчанию: |
Имя | Описание |
---|---|
| Обязательный параметр. Имя сети стека CloudFormation, созданного на этапе настройки сети. |
| Обязательный параметр. Количество выбранных подсетей. В настоящее время поддерживаются только две подсети для развертывания, чтобы равномерно распределить задачи ECS по всем узлам. |
| Обязательный параметр. В настоящее время мы поддерживаем только балансировщики нагрузки с выходом в Интернет, которые доступны извне. После создания стека API измените группы безопасности, чтобы закрыть ненужный доступ. |
Имя | Описание |
---|---|
| Обязательный параметр. Пара ключей для доступа к экземпляру EC2 (если требуется). |
| Необязательный параметр. Этот параметр обеспечивает будущую поддержку экспериментальных клиентов WhatsApp Business API. Значение по умолчанию подходит для большинства случаев. |
| Обязательный параметр. Рекомендуем всегда использовать последнюю стабильную версию (указана в журнале изменений). Версия клиента WhatsApp Business API всегда начинается с буквы v, если явным образом не указано иное. Если используется неправильная версия, создать стек не удастся. |
| Обязательный параметр. Для нагрузок в рабочей среде рекомендуем выбирать размер не менее 32 ГБ. |
Имя | Описание |
---|---|
| Необязательный параметр. Включает сохранение информации о конфигурации в базе данных. |
| Необязательный параметр. Имя узла существующей базы данных. |
| Обязательный параметр. Имя администратора для доступа к базе данных. |
| Обязательный параметр. Пароль администратора для доступа к базе данных. Пароль базы данных не должен содержать следующих символов: ?{}&~!()^/"@ |
| Обязательный параметр. Номер порта для доступа к внутренней базе данных. |
| Необязательный параметр. Указывает, нужно ли сохранять соединение с базой данных для веб-контейнеров. Значение по умолчанию: |
| Необязательный параметр. Время ожидания в миллисекундах, по истечении которого база данных закрывает неактивные подключения. |
Имя | Описание |
---|---|
| Необязательный параметр. Драйвер регистрации для журналов контейнеров. |
| Необязательный параметр. Максимальный размер файла журнала контейнера (в МБ), по достижении которого начинается его ротация. Допустимые значения: от 1 до 250 (оба включительно). По умолчанию: 50. |
| Необязательный параметр. Максимальное количество хранимых файлов журналов на один контейнер. Допустимые значения: от 1 до 30 (оба включительно). По умолчанию: 7. |
| Необязательный параметр. Количество дней хранения журналов в CloudWatch. По умолчанию: |
Имя | Описание |
---|---|
| Не используется. Не задавайте значение для этого параметра. |
Имя | Описание |
---|---|
| Необязательный параметр. По умолчанию для шифрования хранимых данных базы и файловой системы EFS используется сервисный ключ AWS (параметр Default-Key [Ключ по умолчанию]). Другие доступные варианты:
|
| Необязательный параметр. Можно указать ID ключа KMS, который будет использоваться для шифрования данных. Если параметр User-Provided-Keyне выбран, оставьте это поле пустым. |
| Необязательный параметр. По умолчанию в процессе передачи в базу данные шифруются. В настоящее время это относится только к контейнеру Coreapp. Для Webapp шифрование пока не поддерживается. Кроме того, с новым ядром базы данных Coreapp выполняет шифрование, даже если соответствующий параметр отключен, однако при этом не проверяет сертификат (идентификационные данные) сервера. |
| Необязательный параметр. Значение по умолчанию содержит пакет сертификатов RDS. Если используется другая база данных (не RDS), можно предоставить соответствующий пакет сертификатов ЦС или не указывать значение параметра. Для безопасного подключения к базе данных достаточно значения по умолчанию. |
| Необязательный параметр. Сертификат клиента для подключения к базе данных. |
| Необязательный параметр. Ключ клиента для подключения к базе данных. |
Эти параметры необходимы, чтобы на панели 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 Business Manager (на вкладке Номера телефонов WhatsApp Manager).
Выбрав правильный номер телефона и получив сертификат в кодировке Base64, зарегистрируйте клиент WhatsApp Business API через узел account
. Дополнительную информацию см. в документации по регистрации.
Если на этот номер телефона можно принимать SMS, выберите получение кода регистрации через SMS.
Если вы уже получили код регистрации от WhatsApp, этот этап можно пропустить.
После создания стека нужно выполнить вызов API shards
, чтобы увеличить количество активных экземпляров Coreapp для обеспечения нужной пропускной способности. Количество сегментов можно найти в разделе Output стека.
Настройка обратных веб-вызовов 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 и для того, чтобы избежать выдачи предупреждения о доверии сертификату, может потребоваться сертификат центра сертификации (ЦС), который использовался для генерации самозаверяющего сертификата.
Чтобы избежать предупреждения о доверии, вы можете скачать сертификат ЦС и сохранить его локально либо загрузить собственный. Подробнее см. в разделе об узле certificate
.
В развертываниях AWS сертификат SSL создается с использованием имени хоста балансировщика нагрузки. Если вместо имени хоста для доступа используется IP-адрес, предупреждение всё равно выдается.
Возможность настраивать клиентские сертификаты SSL будет добавлена в будущих выпусках WhatsApp.
После настройки и регистрации можно отправить и получить сообщение, чтобы проверить работу основных функций клиента WhatsApp Business API. Эта процедура подробно описана в документации по сообщениям.
Получив сообщение, клиент WhatsApp Business API передает его статус и сведения о нем в запросе POST
к объекту Webhook, настроенному на шаге 3.
Если сообщение получено, это значит, что всё работает. Дополнительную информацию о доступных конечных точках API см. в справке.
Чтобы перезапустить клиент WhatsApp Business API, откройте консоль ECS (например, https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters):
В результате Webapp и Coreapp будут остановлены. Вскоре после этого инфраструктура AWS перезапустит их.
Простой продлится одну-две минуты.
Обновление стека CloudFormation напрямую может привести к тому, что базу данных придется уничтожить и создать заново. Мы настоятельно рекомендуем обновлять систему, следуя шагам из руководства в следующем разделе, чтобы избежать потери данных.
В этом разделе рассказывается, как обновить клиент WhatsApp Business API и шаблон CloudFormation (CFN). Обновление вызовет простой системы, поэтому отправлять сообщения в это время не следует. После завершения обновления отправку сообщений можно продолжить.
Чтобы обновить шаблон CFN и версию клиента WhatsApp Business API одновременно, выполните следующие действия:
Быстрая проверка обновления:отправьте SMS и убедитесь, что ответ API содержит правильный (т. е. новый) номер версии. Также убедитесь, что сообщение дошло до получателя.
Часто компании хотят создать среду с высокой пропускной способностью для кампании, ограниченной по времени, и поддерживать работу среды с меньшими затратами, когда эта кампания неактивна. В этом разделе вы найдете рекомендации, как снизить нагрузку AWS для экономии средств.
Важно! Учтите, что это приведет к простою. Примерное время простоя: 5–15 минут. Убедитесь, что вы выполнили рекомендации DevOps, такие как резервное копирование настроек приложения и базы данных.
2
.c5.large
.
c5.large
, а затем выберите Create template version (Создать версию шаблона).
r5.xlarge
.
3
.3
.2
.2
.2
.