Как начать работать с Yandex Cloud Notification Service с помощью AWS CLI
Примечание
Сервис находится на стадии Preview.
Чтобы включить Cloud Notification Service, запросите доступ к сервису у вашего аккаунт-менеджера или в технической поддержке
Cloud Notification Service (CNS) — сервис для мультиканальной отправки уведомлений пользователям. HTTP API сервиса совместим с Amazon SNS API
На стадии Preview доступна индивидуальная отправка push-уведомлений на устройства с iOS и Android, а также SMS.
Позднее будет реализована отправка уведомлений в мессенджеры и браузеры.
С помощью Cloud Notification Service вы можете отправлять уведомления в приложения, зарегистрированные в следующих сервисах:
- Apple Push Notification service
(APNs). - Firebase Cloud Messaging
(FCM). - Huawei Mobile Services
(HMS).
Чтобы начать работу с AWS CLI:
- Подготовьте облако к работе.
- Получите статический ключ доступа.
- Настройте AWS CLI.
- Создайте канал уведомлений.
- Получите список каналов.
- Создайте эндпоинт.
- Отправьте уведомление.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Получите статический ключ доступа
Для аутентификации в Cloud Notification Service используется статический ключ доступа. Этот ключ выпускается на сервисный аккаунт, и все действия выполняются от имени этого сервисного аккаунта.
Чтобы получить статический ключ доступа:
-
Создайте сервисный аккаунт.
-
Для сервисного аккаунта создайте статический ключ доступа.
Сохраните идентификатор и секретный ключ.
Настройте AWS CLI
AWS CLI
Чтобы настроить AWS CLI:
-
Установите
AWS CLI. -
Введите команду для настройки AWS CLI:
aws configure
-
Введите значения для параметров:
-
AWS Access Key ID
— идентификатор статического ключа. -
AWS Secret Access Key
— секретный ключ. -
Default region name
— регионru-central1
.Примечание
Для работы с Cloud Notification Service всегда указывайте регион —
ru-central1
. Другие значения региона могут привести к ошибке авторизации.
-
-
Значения остальных параметров оставьте без изменений.
-
Задайте эндпоинт Cloud Notification Service:
aws configure set endpoint_url https://notifications.yandexcloud.net/
Пример конфигурационных файлов
-
~/.aws/config
:[default] region = ru-central1 endpoint_url = https://notifications.yandexcloud.net/
-
~/.aws/credentials
:[default] aws_access_key_id = <идентификатор_статического_ключа> aws_secret_access_key = <секретный_ключ>
Подробнее о настройке AWS CLI см. в документации AWS
Создайте канал уведомлений
Чтобы создать канал уведомлений, выполните команду:
aws sns create-platform-application \
--name <имя_канала> \
--platform GCM \
--attributes PlatformCredential=<API-ключ_FCM>
Где:
--name
— имя канала уведомлений, задается пользователем. Должно быть уникальным в облаке. Может содержать строчные и заглавные буквы латинского алфавита, цифры, подчеркивания, дефисы и точки. Допустимая длина — от 1 до 256 символов. Рекомендуется для каналов APNs указывать в имени идентификатор приложения (Bundle ID), для FCM и HMS — полное название пакета приложения (Package name).--platform
— тип мобильной платформы:APNS
иAPNS_SANDBOX
— Apple Push Notification service (APNs). Для тестирования приложения используйтеAPNS_SANDBOX
.GCM
— Firebase Cloud Messaging (FCM).HMS
— Huawei Mobile Services (HMS).
--attributes
— параметры аутентификации на мобильной платформе в форматеключ=значение
. Значения зависят от типа платформы:-
APNs:
- Аутентификация с токеном:
PlatformPrincipal
— путь к файлу с ключом подписи, полученный в Apple.PlatformCredential
— идентификатор ключа подписи (Key ID).ApplePlatformTeamID
— идентификатор разработчика (TeamID).ApplePlatformBundleID
— идентификатор приложения (Bundle ID).
- Аутентификация с сертификатом:
-
PlatformPrincipal
— SSL-сертификат в формате.pem
. -
PlatformCredential
— закрытый ключ сертификата в формате.pem
.Чтобы сохранить сертификат и закрытый ключ в отдельных файлах формата
.pem
, вы можете воспользоваться утилитой openssl в Linux:openssl pkcs12 -in Certificates.p12 -nokeys -nodes -out certificate.pem openssl pkcs12 -in Certificates.p12 -nocerts -nodes -out privatekey.pem
-
Аутентификация с токеном является предпочтительной, как более современная.
- Аутентификация с токеном:
-
FCM:
PlatformCredential
— ключ сервисного аккаунта Google Cloud в формате JSON для аутентификации с помощью HTTP v1 API или API-ключ (server key) для аутентификации с помощью Legacy API.Рекомендуется экранировать содержимое файла с помощью команды
jq @json <<< cat private_key.json
, так как AWS CLI принимает данный параметр в строковом формате.Версия HTTP v1 API является предпочтительной, так как с июня 2024 года Legacy API не будет поддерживаться FCM
. -
HMS:
PlatformPrincipal
— идентификатор ключа.PlatformCredential
— API-ключ.
-
В результате вы получите идентификатор (ARN) канала уведомлений. Сохраните его для использования в дальнейшем.
Подробнее о команде aws sns create-platform-application
см. в документации AWS
Получите список каналов уведомлений
aws sns list-platform-applications
В результате будет выведен список каналов уведомлений, размещенных в том же каталоге, в котором находится сервисный аккаунт.
Подробнее о команде aws sns list-platform-applications
см. в документации AWS
Создайте эндпоинт
Чтобы создать мобильный эндпоинт, выполните команду:
aws sns create-platform-endpoint \
--platform-application-arn <ARN_канала_уведомлений> \
--token <Push-токен>
Где:
--platform-application-arn
— идентификатор (ARN) канала уведомлений.--token
— уникальный Push-токен приложения на устройстве пользователя.
В результате вы получите идентификатор (ARN) мобильного эндпоинта. Сохраните его для дальнейшего использования.
Подробнее о команде aws sns create-platform-endpoint
см. в документации AWS
Отправьте уведомление
Явные уведомления (Bright Push)
aws sns publish \
--target-arn "<ARN_эндпоинта>" \
--message-structure json \
--message '{"default": "<текст_уведомления>", "APNS": "{ \"aps\": { \"alert\": \"<текст_уведомления>\"} }" }'
aws sns publish \
--target-arn "<ARN_эндпоинта>" \
--message-structure json \
--message '{"default": "<текст_уведомления>", "GCM": "{ \"notification\": { \"body\": \"<текст_уведомления>\"} }" }'
Где:
--target-arn
— идентификатор (ARN) мобильного эндпоинта.--message-structure
— формат сообщения.--message
— сообщение.
Тихие уведомления (Silent Push)
aws sns publish \
--target-arn <ARN_эндпоинта> \
--message-structure json \
--message '{"data": { "key": "value" } }'
Где:
--target-arn
— идентификатор (ARN) мобильного эндпоинта.--message-structure
— формат сообщения.--message
— сообщение.
Подробнее о команде aws sns publish
см. в документации AWS