Yandex Cloud
Search
Contact UsGet started
  • Pricing
  • Customer Stories
  • Documentation
  • Blog
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • AI for business
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
  • Pricing
  • Customer Stories
  • Documentation
  • Blog
© 2025 Direct Cursus Technology L.L.C.
Yandex Cloud Notification Service
    • Overview
    • Getting started with mobile push notifications
    • Getting started with in-browser push notifications
    • Getting started with SMS
    • Getting started with topics
    • Overview
    • Mobile push notifications
    • In-browser push notifications
    • SMS
    • Topics
    • Quotas and limits
    • All tools
    • AWS CLI
    • AWS SDK for C++
    • AWS SDK for Go
    • AWS SDK for Java
    • AWS SDK for JavaScript
    • AWS SDK for Kotlin
    • AWS SDK for .NET
    • AWS SDK for PHP
    • AWS SDK for Python (boto3)
  • Pricing policy
  • Monitoring metrics
  • Logs Cloud Logging
  • Release notes

In this article:

  • Create the topic
  • Subscribe endpoints to the topic
  • Send a notification to the topic
  1. Getting started
  2. Getting started with topics

Getting started with topics in Yandex Cloud Notification Service

Written by
Yandex Cloud
Updated at September 23, 2025
  • Create the topic
  • Subscribe endpoints to the topic
  • Send a notification to the topic

Note

The service is at the preview stage.

To enable Cloud Notification Service, request access to the service from your account manager or technical support.

Cloud Notification Service (CNS) is a service for multichannel notifications of users. The service's HTTP API is compatible with the Amazon SNS API.

To send messages to different endpoints at the same time, use topics. You can subscribe the endpoints to a topic and send notifications to all of them at once.

To get started with topics:

  1. Get your cloud ready.

  2. Create notification channels and endpoints:

    • Mobile push notifications
    • In-browser push notifications
    • SMS
      For SMS notifications, you may add phone numbers directly to the topic rather than the channel.
  3. Create a topic.

  4. Subscribe endpoints to the topic.

  5. Send a notification to the topic.

Get your cloud ready

Sign up for Yandex Cloud and create a billing account:

  1. Navigate to the management console and log in to Yandex Cloud or create a new account.
  2. On the Yandex Cloud Billing page, make sure you have a billing account linked and it has the ACTIVE or TRIAL_ACTIVE status. If you do not have a billing account, create one and link a cloud to it.

If you have an active billing account, you can navigate to the cloud page to create or select a folder for your infrastructure.

Learn more about clouds and folders here.

Create the topicCreate the topic

Management console
AWS CLI
AWS SDK for Python
  1. In the management console, select your folder.
  2. In the list of services, select Cloud Notification Service.
  3. Select Topics on the left.
  4. Click Create topic.
  5. Enter a name for the topic. The name must be unique within Cloud Notification Service.
  6. Under Logging, enable the Write logs option.
  7. In the Folder list, select a folder to house the log group.
  8. In the Log group field, select an existing log group or create a new one.
  9. Click Create topic.
  1. If you do not have the AWS CLI yet, install and configure it.

  2. Run this command:

    aws sns create-topic --name <topic_name>
    

    Where name is topic name, which can be any name unique within Cloud Notification Service.

    For more information about the aws sns create-topic command, see the AWS documentation.

  1. If you do not have the AWS SDK for Python (boto3) yet, install and configure it.

  2. To create a push notification channel, use the following code:

    response = client.create_topic(
        Name="<topic_name>"
    )
    
    print (f"Topic ARN:", response['TopicArn'])
    

    Where:

    • Name: Topic name, which can be any name unique within Cloud Notification Service.

Subscribe endpoints to the topicSubscribe endpoints to the topic

Management console
AWS CLI
AWS SDK for Python
  1. Select a topic.

  2. Select Subscriptions on the left.

  3. Click Create subscription.

  4. Select a notification channel type:

    • Mobile push notifications.

      Enter the endpoint ARN in arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id> format. You can copy the ARN on the endpoint’s settings page.

    • In-browser push notifications.

      Enter the endpoint ARN in arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id> format.

    • SMS.

      Enter your phone number in E.164 format, e.g., +79991112233. You do not need to pre-add the phone number to the SMS notification channel, but you need to create the channel itself.

  5. Click Create subscription.

    Subscribe other endpoints to the topic in the same way.

Run this command:

aws sns subscribe \
  --topic-arn <topic_ARN> \
  --protocol <channel_type> \
  --notification-endpoint <endpoint_ARN_or_phone_number>

Where:

  • topic-arn: Topic ARN.
  • protocol: Type of notification channel, e.g., sms, application.
  • notification-endpoint: ARN of the endpoint subscribing to the topic, in arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id> format. For SMS, enter a phone number in E.164 format, e.g., +79991112233.

For more information about the aws sns subscribe command, see the AWS documentation.

Use the following code:

try:
    response = client.subscribe(
        TopicArn = "<topic_ARN>",
        Protocol = "<channel_type>",
        Endpoint = "<endpoint_ARN_or_phone_number>"
    )
    print(f"Topic ARN: {response['TopicArn']}")
except botocore.exceptions.ClientError as error:
    print(f"Error: {error}")

Where:

  • TopicArn: Topic ARN.
  • Protocol: Notification channel type, e.g., sms or application.
  • Endpoint: ARN of the endpoint subscribing to the topic, in arn:aws:sns::<cloud_id>:endpoint/<platform>/<channel_name>/<endpoint_unique_id> format. For SMS, enter a phone number in E.164 format, e.g., +79991112233.

Send a notification to the topicSend a notification to the topic

Management console
AWS CLI
AWS SDK for Python
  1. Select the topic.

  2. Click Send notification.

  3. Select a notification type:

    • Same: To send the same notification to all channel types.
    • Different: To enter different texts for different channel types.
  4. Enter the same text for all channels, or different texts for different channel types, in JSON format. If a channel is not specified, the notification will contain the default message text.

    Notification format in JSON:

    {
      "default": "<Default_text>",
      "sms": "<Notification_text_for_sms>",
      "WEB": "<Notification_text_for_bowser>",
      "APNS": {
        "aps": {
          "alert": {
            "title": "Notification_title",
            "body": "Notification_text"
          }
        }
      },
      "GCM": {
        "notification": {
          "title": "Notification_title",
          "body": "Notification_text"
        }
      },
      "HMS": {
        "notification": {
          "title": "Notification_title",
          "body": "<Notification_text>"
        }
      },
      "RUSTORE": {
        "notification": {
          "title": "Notification_title",
          "body": "<Notification_text>"
        }
      }
    }
    
  5. Click Send.

Run this command:

To send a notification:

aws sns publish \
--topic-arn <topic_ARN> \
--message-structure json \
--message '{"default": "<notification_text>","APNS": {"aps":{"alert":"<notification_text>"}},"GCM": {"notification":{"body":"<notification_text>"}},"HMS": {"notification":{"body":"<notification_text>"}},"RUSTORE": {"notification":{"body":"<notification_text>"}},"WEB": "<notification_text>","sms": "<notification_text>"}'

Where:

  • topic-arn: Topic ARN.
  • message-structure: Message format (json).
  • message: Notification text or path to the notification file. To send different notifications depending on channel type, specify the channel and notification text: If some channel is not specified, the default message will be sent.

For more information about the aws sns publish command, see the AWS documentation.

Use the following code:

try:
    response = client.publish(
        TopicArn="<topic_ARN>",
        Message=json.dumps({
            "default": "<notification_text>",
            "APNS": {"aps":{"alert":"<notification_text>"}},
            "GCM": {"notification":{"body":"<notification_text>"}},
            "HMS": {"notification":{"body":"<notification_text>"}},
            "RUSTORE": {"notification":{"body":"<notification_text>"}},
            "WEB": "<notification_text>",
            "sms": "<notification_text>"
        }),
        MessageStructure="json"
    )
    print(f"Message ID: {response["MessageId"]}")
except botocore.exceptions.ClientError as error:
    print(f"Error: {error}")

Where:

  • TopicArn: Topic ARN.
  • Message: Notification text. You can add the same text for all channel types or different texts for each channel type. If a channel is not specified, the notification will contain the default message text.
  • MessageStructure: Message format (json).

Was the article helpful?

Previous
Getting started with SMS
Next
All guides
© 2025 Direct Cursus Technology L.L.C.