Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Notification Service
    • Обзор
    • Начало работы с мобильными Push-уведомлениями
    • Начало работы с Push-уведомлениями в браузере
    • Начало работы с SMS
    • Начало работы с топиками
    • Обзор
    • Мобильные Push-уведомления
    • Push-уведомления в браузере
    • SMS
    • Топики
    • Квоты и лимиты
    • Все инструменты
    • AWS CLI
    • AWS SDK для С++
    • AWS SDK для Go
    • AWS SDK для Java
    • AWS SDK для JavaScript
    • AWS SDK для Kotlin
    • AWS SDK для .NET
    • AWS SDK для PHP
    • AWS SDK для Python (boto3)
  • Правила тарификации
  • Метрики Monitoring
  • Логи Cloud Logging
  • История изменений

В этой статье:

  • Создайте топик
  • Подпишите эндпоинты на топик
  • Отправьте уведомление в топик
  1. Начало работы
  2. Начало работы с топиками

Как начать работать с топиками в Yandex Cloud Notification Service

Статья создана
Yandex Cloud
Обновлена 9 сентября 2025 г.
  • Создайте топик
  • Подпишите эндпоинты на топик
  • Отправьте уведомление в топик

Примечание

Сервис находится на стадии Preview.

Чтобы включить Cloud Notification Service, запросите доступ к сервису у вашего аккаунт-менеджера или в технической поддержке.

Cloud Notification Service (CNS) — сервис для мультиканальной отправки уведомлений пользователям. HTTP API сервиса совместим с Amazon SNS API.

Чтобы отправлять сообщения в разные эндпоинты одновременно, используйте топики. Топик позволяет отправлять уведомления сразу всем подписанным на него эндпоинтам.

Чтобы начать работать с топиками:

  1. Подготовьте облако к работе

  2. Создайте каналы для уведомлений и эндпоинты:

    • Мобильные push-уведомления
    • Push-уведомления в браузере
    • SMS
      Для SMS можно не добавлять телефонные номера в канале, а добавить их сразу в топике.
  3. Создайте топик

  4. Подпишите эндпоинты на топик

  5. Отправьте уведомление в топик

Подготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Создайте топикСоздайте топик

Консоль управления
AWS CLI
AWS SDK для Python
  1. В консоли управления выберите каталог.
  2. В списке сервисов выберите Cloud Notification Service.
  3. Слева выберите раздел Топики.
  4. Нажмите кнопку Создать топик.
  5. Введите имя топика. Имя топика должно быть уникальным в Cloud Notification Service.
  6. В разделе Логирование включите Запись логов.
  7. В списке Каталог выберите каталог, в котором будет расположена лог-группа.
  8. В поле Лог-группа выберите существующую лог-группу или создайте новую.
  9. Нажмите Создать топик.
  1. Если у вас еще нет AWS CLI, установите и сконфигурируйте его.

  2. Выполните команду:

    aws sns create-topic --name <имя_топика>
    

    Где name — произвольное имя топика, должно быть уникальным в Cloud Notification Service.

    Подробнее о команде aws sns create-topic см. в документации AWS.

  1. Если у вас еще нет AWS SDK для Python (boto3), установите и настройте его.

  2. Чтобы создать канал push-уведомлений, используйте следующий код:

    response = client.create_topic(
        Name="<имя_топика>"
    )
    
    print (f"Topic ARN:", response['TopicArn'])
    

    Где:

    • Name — произвольное имя топика, должно быть уникальным в Cloud Notification Service.

Подпишите эндпоинты на топикПодпишите эндпоинты на топик

Консоль управления
AWS CLI
AWS SDK для Python
  1. Выберите топик.

  2. Слева выберите Подписки.

  3. Нажмите кнопку Создать подписку.

  4. Выберите тип канала уведомлений:

    • Мобильные push-уведомления.

      Введите ARN эндпоинта в формате: arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id>. Скопировать ARN эндпоинта можно на странице его настроек.

    • Push-уведомления в браузере.

      Введите ARN эндпоинта в формате: arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id>.

    • SMS.

      Введите номер телефона в формате E.164, например +79991112233. Телефон не требуется предварительно добавлять в канале уведомлений SMS, при этом сам канал должен быть создан.

  5. Нажмите Создать подписку.

    Таким же образом подпишите на топик другие эндпоинты.

Выполните команду:

aws sns subscribe \
  --topic-arn <ARN_топика> \
  --protocol <тип_канала> \
  --notification-endpoint <ARN_эндпоинта_или_номер_телефона>

Где:

  • topic-arn — ARN топика.
  • protocol — тип канала отправки уведомлений, например, sms, application.
  • notification-endpoint — ARN эндпоинта, который подписывается на топик, в формате arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id>. Для SMS — номер телефона в формате E.164, например +79991112233.

Подробнее о команде aws sns subscribe см. в документации AWS.

Используйте следующий код:

try:
    response = client.subscribe(
        TopicArn = "<ARN_топика>",
        Protocol = "<тип_канала>",
        Endpoint = "<ARN_эндпоинта_или_номер_телефона>"
    )
    print(f"Topic ARN: {response['TopicArn']}")
except botocore.exceptions.ClientError as error:
    print(f"Error: {error}")

Где:

  • TopicArn — ARN топика.
  • Protocol — тип канала для отправки уведомлений, например, sms, application.
  • Endpoint — ARN эндпоинта, который подписывается на топик, в формате arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id>. Для SMS — номер телефона в формате E.164, например +79991112233.

Отправьте уведомление в топикОтправьте уведомление в топик

Консоль управления
AWS CLI
AWS SDK для Python
  1. Выберите топик.

  2. Нажмите кнопку Отправить уведомление.

  3. Выберите вид уведомлений:

    • Одинаковые — во все типы каналов будет отправлено одно и то же уведомление.
    • Различные — можно ввести разные тексты для разных типов каналов.
  4. Введите единый текст для всех каналов или разные тексты для разных типов каналов в формате JSON. Если канал не указан, будет отправлен текст по умолчанию из поля default.

    Формат уведомления в JSON:

    {
      "default": "<Текст_по_умолчанию>",
      "sms": "<Текст_уведомления_для_sms>",
      "WEB": "<Текст_уведомления_для_браузера>",
      "APNS": {
        "aps": {
          "alert": {
            "title": "Заголовок_уведомления",
            "body": "Текст_уведомления"
          }
        }
      },
      "GCM": {
        "notification": {
          "title": "Заголовок_уведомления",
          "body": "Текст_уведомления"
        }
      },
      "HMS": {
        "notification": {
          "title": "Заголовок_уведомления",
          "body": "<Текст_уведомления>"
        }
      },
      "RUSTORE": {
        "notification": {
          "title": "Заголовок_уведомления",
          "body": "<Текст_уведомления>"
        }
      }
    }
    
  5. Нажмите кнопку Отправить.

Выполните команду:

Для отправки уведомления:

aws sns publish \
--topic-arn <ARN_топика> \
--message-structure json \
--message '{"default": "<текст_уведомления>","APNS": {"aps":{"alert":"<текст_уведомления>"}},"GCM": {"notification":{"body":"<текст_уведомления>"}},"HMS": {"notification":{"body":"<текст_уведомления>"}},"RUSTORE": {"notification":{"body":"<текст_уведомления>"}},"WEB": "<текст_уведомления>","sms": "<текст_уведомления>"}'

Где:

  • topic-arn — ARN топика.
  • message-structure — формат сообщения json.
  • message — текст уведомления или путь к файлу с уведомлением. Для отправки разных уведомлений в зависимости от типа канала укажите канал и текст уведомления. Если какой-либо канал не указан, будет отправлено сообщение по умолчанию.

Подробнее о команде aws sns publish см. в документации AWS.

Используйте следующий код:

try:
    response = client.publish(
        TopicArn="<ARN_топика>",
        Message=json.dumps({
            "default": "<текст_уведомления>",
            "APNS": {"aps":{"alert":"<текст_уведомления>"}},
            "GCM": {"notification":{"body":"<текст_уведомления>"}},
            "HMS": {"notification":{"body":"<текст_уведомления>"}},
            "RUSTORE": {"notification":{"body":"<текст_уведомления>"}},
            "WEB": "<текст_уведомления>",
            "sms": "<текст_уведомления>"
        }),
        MessageStructure="json"
    )
    print(f"Message ID: {response["MessageId"]}")
except botocore.exceptions.ClientError as error:
    print(f"Error: {error}")

Где:

  • TopicArn — ARN топика.
  • Message — текст уведомления. Можно указать единый текст для всех типов каналов или разные тексты для каждого типа канала. Если какой-либо канал не указан, будет отправлено сообщение по умолчанию из поля default.
  • MessageStructure — формат сообщения (json).

Была ли статья полезна?

Предыдущая
Начало работы с SMS
Следующая
Все инструкции
Проект Яндекса
© 2025 ООО «Яндекс.Облако»