Мы прекращаем поддержку локального API. Подробные сведения и информацию о том, как перейти на облачный API нового поколения, см. в документе Упразднение локального API.

Развертывание на платформе Amazon Web Services

В этом документе рассказывается, как развернуть WhatsApp Business API на платформе Amazon Web Services (AWS). Процесс состоит из двух основных шагов:

  1. Развертывание клиента WhatsApp Business API
  2. Настройка клиента WhatsApp Business API

После настройки можно обновить клиент. Если вам потребуется перезапустить Webapp и CoreApp, следуйте этим инструкциям.

В этом документе представлен новый шаблон AWS, который мы протестировали на более высокую и стабильную пропускную способность обмена сообщениями. Если вам нужен предыдущий шаблон AWS, обратитесь к архиву.

Начало работы

Прежде чем начать:

Настройка ID аккаунта AWS

Вам необходимо настроить действительный аккаунт AWS и ознакомиться с принципами работы с AWS. В WhatsApp есть шаблоны CloudFormation, которые помогают легко развернуть клиент WhatsApp Business API. Дополнительную информацию см. в Центре ресурсов по началу работы с AWS.

Создание пары ключей AWS

Для доступа к экземпляру EC2, созданному шаблоном WhatsApp Business API, необходимо создать пару ключей. Можно также использовать пару ключей, созданную ранее. Информацию о создании пар ключей и их использовании с экземпляром EC2 см. в документации по парам ключей Amazon EC2.

Пару ключей необходимо создавать для региона, для которого вы планируете развернуть WhatsApp Business API.

Подписка на образ CentOS 9

Клиент WhatsApp Business API использует образ CentOS 9 (он доступен в каталоге AWS Marketplace). Перед использованием шаблона прочтите и примите условия и положения. Если этого не сделать, создать шаблон не удастся.

Чтобы прочесть и принять условия использования образа AMI CentOS 9, выполните следующие действия:

  1. Перейдите на страницу AWS Marketplace: CentOS 9 (x86_64) — with Updates HVM.
  2. В правом верхнем углу нажмите кнопку Continue to Subscribe (Продолжить и подписаться), а затем нажмите Accept Terms (Принять условия).

Поддерживаемые регионы

Шаблоны WhatsApp Business API используют тип ресурсов EFS, который доступен не во всех регионах AWS. В связи с этим поддерживаются только следующие регионы:

  • Сев. Виргиния (us-east-1);
  • Огайо (us-east-2);
  • Сев. Калифорния (us-west-1);
  • Орегон (us-west-2);
  • Мумбаи (ap-south-1);
  • Сеул (ap-northeast-2);
  • Сингапур (ap-southeast-1);
  • Сидней (ap-southeast-2);
  • Токио (ap-northeast-1);
  • Франкфурт (eu-central-1);
  • Ирландия (eu-west-1).

По результатам первоначального тестирования специалисты WhatsApp решат, сможем ли мы предоставить альтернативный вариант, доступный во всех регионах.

Часто задаваемые вопросы

Развертывание

Шаг 1. Настройка сети (необязательно).

При регистрации аккаунта AWS обычно создается виртуальная частная облачная сеть (Virtual Private Cloud, VPC). Кроме того, может потребоваться настройка определенных параметров и ограничений доступа, связанных со спецификой компании.

Если сетевая инфраструктура VPC уже создана, этот шаг можно пропустить. В противном случае для ее создания на платформе AWS можно использовать указанный ниже шаблон.

Сетевой шаблон предлагается исключительно в качестве примера. При необходимости вы можете изменить его.

Требования к сети

  • Необходимо по крайней мере две подсети в разных зонах доступности в пределах региона. В противном случае создать инфраструктуру на основе шаблона не удастся, так как не будет создан ресурс RDS (база данных).
  • Должны быть разрешены входящие соединения по протоколам HTTP (порт 80), HTTPS (порт 443) и SSH (порт 22). Из соображений безопасности настоятельно рекомендуем использовать HTTPS, а не HTTP.

Развертывание шаблона сети:

  1. Откройте консоль CloudFormation для своего региона (например, eu-west-1).
  2. Выберите Create a stack (Создать стек).
  3. Скачайте файл wa_ent_net.yml из репозитория GitHub и сохраните его локально.
  4. Выберите Upload a template file (Загрузить файл шаблона) в качестве источника шаблона и загрузите файл шаблона, скачанный на шаге 3.
    Создание стека
  5. Нажмите Next (Далее).
  6. На странице Specify stack details (Ввод подробных сведений о стеке) введите значения параметров согласно следующей таблице:

Параметры

ИмяОписание

Stack name

Обязательный параметр.

Имя создаваемого стека.

Конфигурация зон доступности

ИмяОписание

Availability zones

Обязательный параметр.

Зоны доступности для создания VPC.
Для использования шаблона необходимо выбрать по крайней мере две зоны доступности. Для рабочей среды рекомендуем выбирать не меньше 3 зон.

Number of availability zones

Обязательный параметр.

Количество выбранных зон доступности.

Конфигурация VPC

ИмяОписание

IP address range

Обязательный параметр.

Диапазон IP-адресов (CIDR) для этой VPC.

Tenancy

Обязательный параметр.

Режим владения VPC.
Возможные значения:default, dedicated.

Конфигурация общедоступной подсети

ИмяОписание

IP range - subnet #1

Обязательный параметр.

Диапазон IP-адресов (CIDR) для общедоступных подсетей.

IP range - subnet #2

Обязательный параметр.

Диапазон IP-адресов (CIDR) для общедоступных подсетей.

IP range - subnet #3

Необязательный параметр.

Обязателен, если количество зон доступности превышает 2.

IP range - subnet #4

Необязательный параметр.

Обязателен, если количество зон доступности превышает 3.

Конфигурация частной подсети

ИмяОписание

Create private subnets?

Обязательный параметр.

Возможные значения:true (по умолчанию), false.
Если по какой-либо причине частная подсеть не нужна, для этого флага можно установить значение false.

IP range - subnet #1

Зависит от условий.

Требуется, если для флага создания частной подсети установлено значение true.

IP range - subnet #2

Зависит от условий.

Обязателен, если для флага создания частной подсети установлено значение true.

IP range - subnet #3

Зависит от условий.

Обязателен, если для флага создания частной подсети установлено значение true и количество зон доступности превышает 2.

IP range - subnet #4

Зависит от условий.

Обязателен, если для флага создания частной подсети установлено значение true и количество зон доступности превышает 3.

Шаг 2. Загрузка файлов конфигурации базы данных и стека отслеживания

Перед развертыванием стека WhatsApp Business API необходимо загрузить файлы конфигурации соответствующих подстеков в контейнере S3, к которому у вас есть доступ на чтение.

  1. Создайте контейнер S3 или используйте существующий, к которому у вас есть доступ на чтение.
  2. Скачайте файлы wa_ent_db.yml и wa_ent_monitoring.yml из репозитория GitHub и загрузите их в контейнер S3, о котором говорилось в шаге 1.
  3. Выберите файл wa_ent_db.yml из списка объектов и скопируйте его URL. Адрес должен быть в формате https://xxx.s3.<avalability_zone>.amazonaws.com/wa_ent_db.yml.
  4. В файле wa_ent.yml замените значение URL шаблона в стеке базы данных на URL объекта из шага 3 и сохраните файл.
  5. Выберите файл wa_ent_monitoring.yml из списка объектов и скопируйте его URL. Адрес должен быть в формате https://xxx.s3.<avalability_zone>.amazonaws.com/wa_ent_monitoring.yml.
  6. В файле wa_ent.yml замените значение URL шаблона в стеке мониторинга на URL объекта из шага 5 и сохраните файл.
Загрузка в контейнер S3

Шаг 3. Развертывание WhatsApp Business API

Основной шаблон — WhatsApp Enterprise. Он создает все ресурсы (кроме сети), необходимые клиенту WhatsApp Business API. Как упоминалось выше, этот шаблон при необходимости создает ресурс базы данных.

Развертывание клиента WhatsApp Business API:

  1. Откройте консоль CloudFormation для своего региона (например, eu-west-1).
  2. Выберите Create a stack (Создать стек).
  3. Скачайте файл wa_ent.yml из репозитория GitHub и сохраните его локально.
  4. Выберите Upload a template file (Загрузить файл шаблона) в качестве источника шаблона и загрузите файл шаблона, скачанный на шаге 3.
    Создание стека
  5. Нажмите Next (Далее).
  6. После этого можно будет ввести параметры. Они описаны в таблице ниже.
  7. После настройки всех параметров (см. таблицы ниже) нажмите Next на странице Configure stack options (Настройка параметров стека). Внесите все необходимые изменения и нажмите Next.
  8. На странице Review stack (Обзор стека) вы увидите сводку по всем значениям параметров и параметрам стека. После проверки установите оба флажка в разделе Capabilities (Возможности) и нажмите Submit (Отправить), чтобы начать создание стека.
    Примечание. Развертывание занимает 20–30 минут.

Параметры

ИмяОписание

Stack name

Обязательный параметр.

Имя создаваемого стека.

Максимальная длина имени стека: 22 символа. Примечание. При развертывании в регионах ap-southeast-1, ap-southeast-2, ap-northeast-1 или ap-northeast-2 максимальная длина имени стека: 8 символов.

Если длина stack name превышает эти ограничения, создать стек не удастся (поскольку нельзя будет создать сертификат SSL).

Общая конфигурация

ИмяОписание

High Availability

Необязательный параметр.

Включает функцию High Availability.


Значение по умолчанию:enabled

Desired Throughput

Обязательный параметр.

Количество сообщений в секунду.


Выбор и настройка ресурсов сервера и базы данных происходит автоматически в соответствии с нужной пропускной способностью для выбранного типа сообщений Type of Message.

Type of Message

Обязательный параметр.

Основной тип сообщений, которые вы планируете отправлять и получать.


Выбор и настройка ресурсов сервера и базы данных происходит автоматически в соответствии с нужной пропускной способностью Desired Throughput для выбранного типа сообщений.

Host exporter for instance monitoring

Необязательный параметр.

Устанавливает node-exporter в каждом узле CoreApp для отслеживания экземпляра.


Значение по умолчанию:enabled

Конфигурация сети

ИмяОписание

Network Stack Name

Обязательный параметр.

Имя сети стека CloudFormation, созданного на этапе настройки сети.

Number of subnets

Обязательный параметр.

Количество выбранных подсетей.


В настоящее время поддерживаются только две подсети для развертывания, чтобы равномерно распределить задачи ECS по всем узлам.

Load balancer scheme

Обязательный параметр.

В настоящее время мы поддерживаем только балансировщики нагрузки с выходом в Интернет, которые доступны извне. После создания стека API измените группы безопасности, чтобы закрыть ненужный доступ.

Конфигурация контейнера

ИмяОписание

Keypair to use

Обязательный параметр.

Пара ключей для доступа к экземпляру EC2 (если требуется).

WA Enterprise container registry

Необязательный параметр.

Этот параметр обеспечивает будущую поддержку экспериментальных клиентов WhatsApp Business API. Значение по умолчанию подходит для большинства случаев.

WA Enterprise Client version

Обязательный параметр.

Рекомендуем всегда использовать последнюю стабильную версию (указана в журнале изменений).
Формат номера версии — v2.yy.xx.

Версия клиента WhatsApp Business API всегда начинается с буквы v, если явным образом не указано иное. Если используется неправильная версия, создать стек не удастся.

EBS volume size

Обязательный параметр.

Для нагрузок в рабочей среде рекомендуем выбирать размер не менее 32 ГБ.

Конфигурация базы данных

ИмяОписание

Store configuration in DB

Необязательный параметр.

Включает сохранение информации о конфигурации в базе данных.
Возможные значения:true (используется по умолчанию), false.
Если задать значение false, информация о конфигурации будет сохраняться не в базе данных, а в файлах.

Existing DB hostname

Необязательный параметр.

Имя узла существующей базы данных.
Если у вас уже есть выделенный экземпляр базы данных MySQL для клиента WhatsApp Business API, введите имя узла в этом поле.
Если оставить это поле пустым, будет создан новый экземпляр Amazon Aurora. Для стабильной высокой пропускной способности настоятельно рекомендуем создать новую базу данных Aurora или использовать существующую БД Aurora, ранее созданную с помощью этого шаблона.

Administrator name

Обязательный параметр.

Имя администратора для доступа к базе данных.

Administrator password

Обязательный параметр.

Пароль администратора для доступа к базе данных.

Пароль базы данных не должен содержать следующих символов: ?{}&~!()^/"@

Server port

Обязательный параметр.

Номер порта для доступа к внутренней базе данных.

Persist DB Connection

Необязательный параметр.

Указывает, нужно ли сохранять соединение с базой данных для веб-контейнеров.


Значение по умолчанию:enabled

DB Idle Connection Timeout

Необязательный параметр.

Время ожидания в миллисекундах, по истечении которого база данных закрывает неактивные подключения.
Значение по умолчанию — 180 000 мс.

Конфигурация журналов

ИмяОписание

Logging driver for container logs

Необязательный параметр.

Драйвер регистрации для журналов контейнеров.
Возможные значения:json-file (используется по умолчанию), awslogs.
Если выбрано значение json-file, журналы хранятся на хостах EC2. Если выбрано значение awslogs, все журналы контейнеров передаются в CloudWatch.

Maximum container log file size

Необязательный параметр.

Максимальный размер файла журнала контейнера (в МБ), по достижении которого начинается его ротация.

Допустимые значения: от 1 до 250 (оба включительно). По умолчанию: 50.

Maximum number of container log files

Необязательный параметр.

Максимальное количество хранимых файлов журналов на один контейнер.
Остановленные контейнеры рано или поздно удаляются с хоста. В этих случаях все их файлы журналов также удаляются.

Допустимые значения: от 1 до 30 (оба включительно). По умолчанию: 7.

Days to retain CloudWatch logs

Необязательный параметр.

Количество дней хранения журналов в CloudWatch.
Выберите значение из списка допустимых значений.

По умолчанию7

Конфигурация файловой системы

ИмяОписание

File system identifier

Не используется.

Не задавайте значение для этого параметра.

Конфигурация безопасности

ИмяОписание

Key to encrypt DB & EFS

Необязательный параметр.

По умолчанию для шифрования хранимых данных базы и файловой системы EFS используется сервисный ключ AWS (параметр Default-Key [Ключ по умолчанию]). Другие доступные варианты:

  • Unencrypted (Без шифрования) — хранимые данные не шифруются.
  • Create-New-Key (Создать новый ключ) — создается новый ключ KMS, который и используется для шифрования данных.
  • User-Provided-Key (Ключ, предоставленный пользователем) — пользователь может указать ID ключа KMS, который будет использоваться для шифрования данных. Если выбран другой параметр, оставьте это поле пустым.

User provided key id

Необязательный параметр.

Можно указать ID ключа KMS, который будет использоваться для шифрования данных. Если параметр User-Provided-Keyне выбран, оставьте это поле пустым.

DB connection encryption

Необязательный параметр.

По умолчанию в процессе передачи в базу данные шифруются. В настоящее время это относится только к контейнеру Coreapp. Для Webapp шифрование пока не поддерживается. Кроме того, с новым ядром базы данных Coreapp выполняет шифрование, даже если соответствующий параметр отключен, однако при этом не проверяет сертификат (идентификационные данные) сервера.

CA certificate for DB connection

Необязательный параметр.

Значение по умолчанию содержит пакет сертификатов RDS. Если используется другая база данных (не RDS), можно предоставить соответствующий пакет сертификатов ЦС или не указывать значение параметра. Для безопасного подключения к базе данных достаточно значения по умолчанию.

Client certificate for DB connection

Необязательный параметр.

Сертификат клиента для подключения к базе данных.

Client key for DB connection

Необязательный параметр.

Ключ клиента для подключения к базе данных.

Точка доступа WhatsApp Business API

Эти параметры необходимы, чтобы на панели Grafana могли поступать метрики приложения для отслеживания.

ИмяОписание

WAWebUsername

Обязательный параметр.

Имя пользователя WhatsApp Business API.

WAWebPassword

Обязательный параметр.

Пароль для WAWebUsername. Ваш новый пароль после изменения пароля по умолчанию при первом входе.

Grafana

ИмяОписание

GrafanaAdminPassword

Обязательный параметр.

Пароль, который используется при входе в панель Grafana после создания стека.

GrafanaEnableSmtp

Необязательный параметр.

Указывает, включен ли протокол SMTP для настройки оповещений по электронной почте. Значения: 0 — отключено; 1 — включено.

По умолчанию0 (отключено)

GrafanaSmtpHost

Необязательный параметр.

Узел SMTP, используемый для оповещений по электронной почте. Например: smtp.gmail.com:465.

GrafanaSmtpUser

Необязательный параметр.

Имя пользователя SMTP в оповещениях по электронной почте.

GrafanaSmtpPassword

Необязательный параметр.

Пароль SMTP в оповещениях по электронной почте.

Выходные данные после развертывания

После успешного создания шаблона система выводит следующие данные:

  • имя балансировщика нагрузки — имя хоста балансировщика нагрузки для доступа к клиенту API платформы WhatsApp Business;
  • имя хоста базы данных — имя хоста базы данных, созданной или указанной на этапе создания шаблона;
  • номер порта базы данных — номер порта для подключения к базе данных;
  • имя кластера ECS — имя созданного кластера ECS;
  • дни хранения журнала — количество дней хранения журнала;
  • ЦС подключения базы данных — значение ЦС подключения БД (если настроено);
  • сертификат подключения базы данных — значение сертификата подключения БД (если настроено);
  • ключ подключения базы данных — значение ключа подключения базы данных (если настроено);
  • Grafana — URL панели Grafana;
  • ShardCount — количество сегментов, которые необходимо настроить для API платформы WhatsApp Business.

Изменение правил безопасности SSH

По умолчанию правила безопасности, созданные стеком, разрешают весь трафик для доступа к экземплярам EC2 через SSH, конечным точкам API и панели Grafana через HTTPs, а также контейнерам Cadvisor и Prometheus. В целях безопасности настоятельно рекомендуется ограничить ненужный доступ. В этом разделе показаны действия по обновлению правила безопасности SSH. Всегда оставляйте доступ к SSH только для трафика, которому вы доверяете.

  1. В консоли EC2 - Security Groups (Группы безопасности), например EC2 Management Console (amazon.com):
    1. В правом верхнем углу выберите нужный регион.
    2. Выберите группу безопасности, которая содержит <stackName>-EcsSecurityGroup, а затем перейдите на вкладку Inbound Rules (Правила входящего трафика).
      Изменение правил входящего трафика
    3. Выберите Edit inbound rules (Изменить правила входящего трафика) и измените столбец Source (Источник), указав в нем только трафик, которому вы доверяете (например, My IP), чтобы у него был доступ к узлам EC2 через SSH.
    4. Настроив правила безопасности, нажмите Save rules (Сохранить правила), чтобы изменения вступили в силу.
    5. Повторите эти действия для групп безопасности, содержащих "<stackName>-ms-xxx-EcsSecurityGroup", чтобы ограничить доступ к SSH для стека отслеживания.

Настройка клиента WhatsApp Business API

Чтобы можно было начать работу, после развертывания клиент WhatsApp Business API необходимо настроить.

Шаг 1. Регистрация телефона

Подробную информацию о регистрации номера телефона см. в этом руководстве.

Скачайте сертификат в кодировке Base64 из своего аккаунта WhatsApp в Facebook Business Manager (на вкладке Номера телефонов WhatsApp Manager).

Выбрав правильный номер телефона и получив сертификат в кодировке Base64, зарегистрируйте клиент WhatsApp Business API через узел account. Дополнительную информацию см. в документации по регистрации.

Если на этот номер телефона можно принимать SMS, выберите получение кода регистрации через SMS.

Если вы уже получили код регистрации от WhatsApp, этот этап можно пропустить.

Шаг 2. Настройка сегментов

После создания стека нужно выполнить вызов API shards, чтобы увеличить количество активных экземпляров Coreapp для обеспечения нужной пропускной способности. Количество сегментов можно найти в разделе Output стека.

Шаг 3. Обновление настроек приложения

Настройка обратных веб-вызовов 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"
    }
}

      
      
    

Шаг 4. Конфигурация SSL (необязательно)

По умолчанию при создании клиент WhatsApp Business API генерирует самозаверяющий сертификат. Для подтверждения конечной точки клиента WhatsApp Business API и для того, чтобы избежать выдачи предупреждения о доверии сертификату, может потребоваться сертификат центра сертификации (ЦС), который использовался для генерации самозаверяющего сертификата.

Чтобы избежать предупреждения о доверии, вы можете скачать сертификат ЦС и сохранить его локально либо загрузить собственный. Подробнее см. в разделе об узле certificate.

В развертываниях AWS сертификат SSL создается с использованием имени хоста балансировщика нагрузки. Если вместо имени хоста для доступа используется IP-адрес, предупреждение всё равно выдается.

Возможность настраивать клиентские сертификаты SSL будет добавлена в будущих выпусках WhatsApp.

Шаг 5. Проверка конфигурации

После настройки и регистрации можно отправить и получить сообщение, чтобы проверить работу основных функций клиента WhatsApp Business API. Эта процедура подробно описана в документации по сообщениям.

Получив сообщение, клиент WhatsApp Business API передает его статус и сведения о нем в запросе POST к объекту Webhook, настроенному на шаге 3.

Если сообщение получено, это значит, что всё работает. Дополнительную информацию о доступных конечных точках API см. в справке.

Перезапуск Coreapp и Webapp

Чтобы перезапустить клиент WhatsApp Business API, откройте консоль ECS (например, https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters):

  1. В правом верхнем углу выберите нужный регион.
  2. Выберите из списка соответствующий кластер.
  3. На вкладке Services (Службы) выберите службу, в имени которой содержится подстрока WAEntService.
  4. Откройте вкладку Tasks (Задачи). Скорее всего, там будет только одна задача с шестнадцатеричным ID.
  5. В окне Tasks нажмите Stop (Остановить) в правом верхнем углу, а затем по запросу ещё раз нажмите Stop.

В результате Webapp и Coreapp будут остановлены. Вскоре после этого инфраструктура AWS перезапустит их.

Простой продлится одну-две минуты.

Обновление

Обновление стека CloudFormation напрямую может привести к тому, что базу данных придется уничтожить и создать заново. Мы настоятельно рекомендуем обновлять систему, следуя шагам из руководства в следующем разделе, чтобы избежать потери данных.

В этом разделе рассказывается, как обновить клиент WhatsApp Business API и шаблон CloudFormation (CFN). Обновление вызовет простой системы, поэтому отправлять сообщения в это время не следует. После завершения обновления отправку сообщений можно продолжить.

Чтобы обновить шаблон CFN и версию клиента WhatsApp Business API одновременно, выполните следующие действия:

  1. На шаге 5 инструкций по обновлению клиента WhatsApp Business API вместо пункта Use current template (Использовать текущий шаблон) выберите Replace current template (Заменить текущий шаблон).
  2. В разделе Specify template section (Укажите шаблон) нажмите Upload a template file (Загрузить файл шаблона) и выберите последний файл, скачанный из GitHub.

Обновление клиента WhatsApp Business API

  1. Откройте консоль CFN (например, https://us-west-2.console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks?filter=active).
  2. В правом верхнем углу выберите нужный регион.
  3. Выберите уже созданный стек клиента WhatsApp Business API.
  4. Нажмите Update (Обновить).
  5. На странице Prerequisite — Prepare template (Предварительное требование — подготовка шаблона) установите флажок Replace current template (Заменить текущий шаблон). В разделе Specify template (Укажите шаблон) нажмите Upload a template file (Загрузить файл шаблона) и выберите последний файл, скачанный из GitHub. Нажмите Next (Далее).
  6. На странице Specify stack details (Ввод сведений о стеке) установите нужную версию клиента WhatsApp Business API (контейнера). НЕ МЕНЯЙТЕ другие параметры. Нажмите Next (Далее).
  7. На странице Configure Stack Options (Настройка параметров стека) нажмите кнопку Next.
  8. На странице Review (Проверка) выберите I acknowledge that AWS CloudFormation might create IAM resources with custom names (Я понимаю, что AWS CloudFormation может создавать ресурсы IAM с пользовательскими именами). Проверьте раздел Change set preview (Предварительный просмотр внесенных изменений) на предмет нежелательных изменений. Если вы обнаружите какие-то изменения, в правильности которых не уверены, обратитесь в прямую поддержку WhatsApp. Нажмите Update Stack (Обновить стек). Статус обновления стека можно отслеживать на консоли CFN. Когда обновление завершится, статус UPDATE_IN_PROGRESS сменится на UPDATE_COMPLETE.

Быстрая проверка обновления:отправьте SMS и убедитесь, что ответ API содержит правильный (т. е. новый) номер версии. Также убедитесь, что сообщение дошло до получателя.

Обновление шаблона WhatsApp CFN

  1. Откройте консоль CFN (например, https://us-west-2.console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks?filter=active).
  2. В правом верхнем углу выберите нужный регион.
  3. Выберите уже созданный стек клиента WhatsApp Business API.
  4. Нажмите Update (Обновить).
  5. На странице Prerequisite — Prepare template (Предварительное требование — подготовка шаблона) установите флажок Replace current template (Заменить текущий шаблон). В разделе Specify template (Укажите шаблон) нажмите Upload a template file (Загрузить файл шаблона) и выберите последний файл, скачанный из GitHub. Нажмите Next (Далее).
  6. На странице Specify Stack Details (Ввод сведений о стеке) введите параметры согласно инструкциям из предыдущих разделов. Нажмите Next (Далее).
  7. На странице Configure Stack Options (Настройка параметров стека) нажмите кнопку Next.
  8. На странице Review (Проверка) выберите I acknowledge that AWS CloudFormation might create IAM resources with custom names (Я понимаю, что AWS CloudFormation может создавать ресурсы IAM с пользовательскими именами). Проверьте раздел Change set preview (Предварительный просмотр внесенных изменений) на предмет нежелательных изменений. Если вы обнаружите какие-то изменения, в правильности которых не уверены, обратитесь в прямую поддержку WhatsApp. Нажмите Update Stack (Обновить стек). Статус обновления стека можно отслеживать на консоли CFN. Когда обновление завершится, статус UPDATE_IN_PROGRESS сменится на UPDATE_COMPLETE.

Снижение затрат вручную при простое системы (необязательно)

Часто компании хотят создать среду с высокой пропускной способностью для кампании, ограниченной по времени, и поддерживать работу среды с меньшими затратами, когда эта кампания неактивна. В этом разделе вы найдете рекомендации, как снизить нагрузку AWS для экономии средств.

Важно! Учтите, что это приведет к простою. Примерное время простоя: 5–15 минут. Убедитесь, что вы выполнили рекомендации DevOps, такие как резервное копирование настроек приложения и базы данных.

  1. В консоли ECS, например Amazon ECS:
    1. В правом верхнем углу выберите нужный регион.
    2. Выберите из списка соответствующий кластер.
    3. На вкладке Services (Службы) выберите службу, в имени которой содержится подстрока WAEntCoreappService. Выберите Edit Service (Изменить службу) и установите для Desired tasks (Нужное количество заданий) значение 0.
      Конфигурация развертывания
    4. Повторите шаг c для остальных служб, в том числе WAEntWebService, WAEntMasterService и HostExporterService.
    5. Вернитесь на страницу кластера, перейдите на вкладку Tasks (Задания) и убедитесь, что у указанных выше служб нет запущенных заданий.
  2. В консоли EC2 - Auto Scaling Groups (Группы автоматического масштабирования), например Auto Scaling groups | EC2 Management Console (amazon.com):
    1. В правом верхнем углу выберите нужный регион.
    2. Выберите группу автоматического масштабирования стека, в имени которой содержится подстрока HAECSAutoScalingGroup, и нажмите Edit (Изменить). Установите для Desired capacity (Нужная вместимость) и Minimum capacity (Минимальная вместимость) значения 3.
      Размер группы
    3. Выберите группу автоматического масштабирования стека, в имени которой содержится подстрока HAECSAutoScalingGroupWeb, и нажмите Edit (Изменить). Установите для Desired capacity и Minimum capacity значения 2.
  3. (Необязательно.) Если в качестве начального значения для параметра Type of message (Тип сообщения) задан какой-либо тип образа, вы можете заменить типы экземпляров EC2 более дешевым вариантом c5.large.
    1. В консоли EC2 - Launch Templates (Шаблоны запуска) выберите из списка подходящий шаблон запуска.
    2. Нажмите Actions (Действия) > Modify template (Изменить шаблон). Это действие создает новую версию.
      Консоль шаблонов запуска
    3. В разделе Instance type (Тип экземпляра) установите тип экземпляра c5.large, а затем выберите Create template version (Создать версию шаблона).
      Тип экземпляра
    4. В консоли EC2 - Auto Scaling Groups (Группы автоматического масштабирования) выберите группу автоматического масштабирования стека, в имени которой содержится подстрока HAECSAutoScalingGroup.
    5. Нажмите Edit в разделе Launch template (Шаблон запуска).
    6. Выберите новый шаблон запуска, созданный на шаге 3c, и нажмите Update (Обновить).
      Шаблон запуска
  4. В консоли RDS, например RDS Management Console (amazon.com):
    1. В правом верхнем углу выберите нужный регион.
    2. Выберите из списка подходящую базу данных Aurora.
    3. Нажмите Modify (Изменить) и установите для класса экземпляра базы данных значение r5.xlarge.
      Конфигурация экземпляра
  5. В консоли ECS, например Amazon ECS:
    1. В правом верхнем углу выберите нужный регион.
    2. Выберите из списка соответствующий кластер.
    3. На вкладке Services (Службы) выберите службу, в имени которой содержится подстрока WAEntCoreappService. Выберите Edit Service (Изменить службу) и установите для Desired tasks (Нужное количество заданий) значение 3.
    4. На вкладке Services (Службы) выберите службу, в имени которой содержится подстрока HostExporterService. Выберите Edit Service (Изменить службу) и установите для Desired tasks (Нужное количество заданий) значение 3.
    5. На вкладке Services выберите службу, в имени которой содержится подстрока WAEntWebService. Выберите Edit Service (Изменить службу) и установите для Desired tasks значение 2.
    6. На вкладке Services выберите службу, в имени которой содержится подстрока WAEntMasterService. Выберите Edit Service (Изменить службу) и установите для Desired tasks значение 2.
  6. Подождите, пока все службы запустят нужное количество заданий. Когда задания будут запущены, с помощью Shards API установите количество сегментов, равное 2.
  7. Проверьте работоспособность системы с помощью Health API. Чтобы проверить базовую функциональность клиента WhatsApp Business API, можно отправить и получить сообщение. Эта процедура подробно описана в документации по сообщениям.