Как начать работать с Yandex Cloud Notification Service с помощью AWS CLI
Примечание
Сервис находится на стадии Preview.
Чтобы начать работу с 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 configure get endpoint_urlКоманды
configure setиconfigure getработают с настройками в конфигурационном файле~/.aws/config. Также можно задать параметры в переменных окружения .Важно
Поскольку эндпоинт можно задать разными способами, каждый из способов имеет свой приоритет
. Переменная окружения имеет больший приоритет, чем значение в файле конфигурации.Чтобы исключить конфликты параметров, проверьте переменную окружения с помощью команды
echo $AWS_ENDPOINT_URLи параметр в конфигурации —aws configure get endpoint_url.Также проверьте отсутствие конфликтов в конфигурации (файл
~/.aws/credentials) с переменными окруженияAWS_DEFAULT_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY.
Пример конфигурационных файлов
-
~/.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 <тип_платформы> \
--attributes <параметр1>=<значение1>, ... <параметрN>=<значениеN>
Где:
-
--name— имя канала уведомлений, задается пользователем.Имя должно быть уникальным для всего CNS. После создания канала изменить имя нельзя. Имя может содержать строчные и заглавные буквы латинского алфавита, цифры, подчеркивания, дефисы и точки. Длина — от 1 до 256 символов. Рекомендуется для каналов APNs указывать в имени идентификатор приложения (Bundle ID), для FCM и HMS — полное название пакета приложения (Package name), для RuStore — значение
packageName. -
--platform— тип мобильной платформы:APNSиAPNS_SANDBOX— Apple Push Notification service (APNs). Для тестирования приложения используйтеAPNS_SANDBOX.GCM— Firebase Cloud Messaging (FCM).HMS— Huawei Mobile Services (HMS).RUSTORE— RuStore Android.
-
--attributes— параметры аутентификации на мобильной платформе в формате<параметр>=<значение>через запятую. Значения зависят от типа платформы:-
APNs:
-
Аутентификация с токеном:
PlatformPrincipal— путь к файлу с ключом подписи, полученный в Apple.PlatformCredential— идентификатор ключа подписи (Key ID).ApplePlatformTeamID— идентификатор разработчика (Team ID).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-ключ.
-
RuStore:
PlatformPrincipal— идентификатор проекта (ProjectID).PlatformCredential— сервисный токен (ServiceToken).
-
В результате вы получите идентификатор (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