Call Amazon SNS with Step Functions - AWS Step Functions
AWS services or capabilities described in AWS documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with AWS services in China.

Call Amazon SNS with Step Functions

Step Functions can control certain AWS services directly from the Amazon States Language. For more information about working with AWS Step Functions and its integrations, see the following:

Supported Amazon SNS APIs:


There is a quota for the maximum input or result data size for a task in Step Functions. This restricts you to 262,144 bytes of data as a UTF-8 encoded string when you send to, or receive data from, another service. See Quotas Related to State Machine Executions.

The following includes a Task state that publishes to an Amazon Simple Notification Service (Amazon SNS) topic.

{ "StartAt": "Publish to SNS", "States": { "Publish to SNS": { "Type": "Task", "Resource": "arn:aws-cn:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws-cn:sns:us-east-1:123456789012:myTopic", "Message.$": "$.input.message", "MessageAttributes": { "my attribute no 1": { "DataType": "String", "StringValue": "value of my attribute no 1" }, "my attribute no 2": { "DataType": "String", "StringValue": "value of my attribute no 2" } } }, "End": true } } }

Passing dynamic values. You can modify the above example to dynamically pass an attribute from this JSON payload:

{ "input": { "message": "Hello world" }, "SNSDetails": { "attribute1": "some value", "attribute2": "some other value", } }

Append the .$ to the StringValue field:

"MessageAttributes": { "my attribute no 1": { "DataType": "String", "StringValue.$": "$.SNSDetails.attribute1" }, "my attribute no 2": { "DataType": "String", "StringValue.$": "$.SNSDetails.attribute2" }

The following includes a Task state that publishes to an Amazon SNS topic, and then waits for the task token to be returned. See Wait for a Callback with the Task Token.

{ "StartAt":"Send message to SNS", "States":{ "Send message to SNS":{ "Type":"Task", "Resource":"arn:aws:states:::sns:publish.waitForTaskToken", "Parameters":{ "TopicArn":"arn:aws:sns:us-east-1:123456789012:myTopic", "Message":{ "Input.$":"$", "TaskToken.$":"$$.Task.Token" } }, "End":true } } }

For information on how to configure IAM when using Step Functions with other AWS services, see IAM Policies for Integrated Services.