Reference · Tools

AWS SNS

Manage Amazon SNS topics and publish messages

Action Communication v1

The AWS SNS node connects your BusyBot workflows to Amazon Simple Notification Service, letting you create topics, publish messages, and manage subscriptions across protocols including email, SMS, SQS, Lambda, and HTTP webhooks. You could, for example, build a pipeline that creates an SNS topic on demand, attaches an SQS queue as a subscriber, and then fans out order-processing events to it automatically.

Node type
Action
Parameters
17
Outputs
Output, Error
Credentials
AWS

AWS SNS

Manage Amazon SNS topics and publish messages

Overview

The AWS SNS node manages Amazon Simple Notification Service topics and messages. It can create and delete SNS topics, publish messages to topics, and manage topic subscriptions. Supports standard and FIFO topics with optional display names. For the Publish operation, messages include a subject (used for email endpoints) and a message body. Subscription management allows creating subscriptions with protocols like HTTP, HTTPS, email, email-json, sms, sqs, lambda, and application.

Category: Communication
Tool Name: aws_sns
Version: 1

Appearance: Icon: lucide-Server | Color: #FF9900

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires AWS credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Topictopic
Subscriptionsubscription

Operations

ResourceOperationValueDescription
TopicCreatecreateCreate a new SNS topic
TopicDeletedeleteDelete an SNS topic
TopicGet ManygetAllList all SNS topics
TopicPublishpublishPublish a message to a topic
SubscriptionCreatecreateSubscribe an endpoint to a topic
SubscriptionDeletedeleteUnsubscribe from a topic
SubscriptionGet ManygetAllList subscriptions for a topic
SubscriptionConfirmconfirmConfirm a pending subscription

Parameters

Topic: Create

ParameterTypeRequiredDefaultDescription
Topic NamestringYesName for the new SNS topic. Supports expressions.
Options (options)collectionNo{}Extra attributes applied when the topic is created.
— Display NamestringNoThe display name to use for a topic with SMS subscriptions.
— FIFO TopicbooleanNofalseWhether to create a FIFO (first-in-first-out) topic. FIFO topics provide strict message ordering and deduplication.

Topic: Delete

ParameterTypeRequiredDefaultDescription
Topic ARNstringYesThe ARN of the SNS topic. Find in AWS Console > SNS > Topics. Supports expressions.

Topic: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Topic: Publish

ParameterTypeRequiredDefaultDescription
Topic ARNstringYesThe ARN of the SNS topic. Find in AWS Console > SNS > Topics. Supports expressions.
SubjectstringYesSubject line when the message is delivered to email endpoints.
MessagestringYesThe message body to publish to the topic.
Options (publishOptions)collectionNo{}Extra publishing options, mainly for FIFO topics and per-protocol payloads.
— Message Group IDstringNoRequired for FIFO topics. Tag that specifies the message belongs to a specific message group.
— Message Deduplication IDstringNoToken used for deduplication of sent messages. Required for FIFO topics without content-based deduplication.
— Message StructureoptionsNoSet to “json” to send a different message for each protocol. The Message parameter must then be a JSON object with protocol keys.
Options: "" (Default — the same message body goes to every protocol), json (JSON per-protocol)

Subscription: Create

ParameterTypeRequiredDefaultDescription
Topic ARNstringYesThe ARN of the SNS topic. Supports expressions.
ProtocoloptionsYeshttpsThe protocol to use for the subscription endpoint.
Options: http, https, email, email-json, sms, sqs, lambda, application
EndpointstringYesThe endpoint that receives notifications. Format depends on protocol: URL for HTTP/HTTPS, email address for email, phone number for SMS, ARN for SQS/Lambda/Application.

Subscription: Delete

ParameterTypeRequiredDefaultDescription
Subscription ARNstringYesThe ARN of the subscription to delete. Supports expressions.

Subscription: Get Many

ParameterTypeRequiredDefaultDescription
Topic ARNstringYesThe ARN of the SNS topic. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Subscription: Confirm

ParameterTypeRequiredDefaultDescription
Topic ARNstringYesThe ARN of the SNS topic. Supports expressions.
TokenstringYesThe token from the subscription confirmation message sent by SNS.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The SNS response is merged into the item JSON — the incoming fields pass through and binary data is forwarded. Most operations produce one output item per input item; the two Get Many operations fan out to one output item per result.

Resource / OperationFields added to the item
Topic / createTopicArn
Topic / deletesuccess: true
Topic / publishMessageId, plus SequenceNumber on FIFO topics
Topic / getAllOne item per topic, each with TopicArn and topicName (the last segment of the ARN). When the account has no topics, a single item with topics: []
Subscription / createSubscriptionArnpending confirmation until the endpoint owner confirms
Subscription / deletesuccess: true
Subscription / getAllOne item per subscription, each with SubscriptionArn, Owner, Protocol, Endpoint and TopicArn. When the topic has no subscriptions, a single item with subscriptions: []
Subscription / confirmSubscriptionArn — the confirmed subscription

Reference any field downstream by expression, e.g. {{ $json.TopicArn }}.

Usage Examples

  • Publish an alert message to an SNS topic
  • Create a new SNS topic for order notifications
  • Subscribe an email address to an SNS topic
  • List all SNS topics in the account
  • Delete an unused SNS topic
  • List subscriptions for a specific topic

Example Configuration

Create a standard topic:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "create",
    "topicName": "MyNotificationTopic"
  }
}

Create a FIFO topic with a display name for SMS:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "create",
    "topicName": "MyFifoTopic",
    "options": {
      "displayName": "My FIFO Notification Topic",
      "fifoTopic": true
    }
  }
}

Publish a message to a topic:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "publish",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "subject": "Order {{ $json.orderId }}",
    "message": "Hello from SNS!"
  }
}

Publish to a FIFO topic with a per-protocol payload:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "publish",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyFifoTopic.fifo",
    "subject": "Important Notification",
    "message": "{\"default\":\"This is an important message\",\"email\":\"This is an important message, sent by email\"}",
    "publishOptions": {
      "messageGroupId": "group1",
      "messageDeduplicationId": "{{ $json.eventId }}",
      "messageStructure": "json"
    }
  }
}

Delete a topic:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "delete",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic"
  }
}

List every topic in the account:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "getAll",
    "returnAll": true
  }
}

List the first 10 topics only:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "topic",
    "operation": "getAll",
    "returnAll": false,
    "limit": 10
  }
}

Subscribe an email address:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "subscription",
    "operation": "create",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "protocol": "email",
    "endpoint": "user@example.com"
  }
}

Fan a topic out to an SQS queue:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "subscription",
    "operation": "create",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "protocol": "sqs",
    "endpoint": "arn:aws:sqs:us-east-1:123456789012:MyQueue"
  }
}

List the subscriptions attached to a topic:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "subscription",
    "operation": "getAll",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "returnAll": true
  }
}

Unsubscribe an endpoint:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "subscription",
    "operation": "delete",
    "subscriptionArn": "arn:aws:sns:us-east-1:123456789012:MyTopic:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
  }
}

Confirm a pending subscription with the token from the confirmation message:

{
  "type": "aws_sns",
  "parameters": {
    "resource": "subscription",
    "operation": "confirm",
    "topicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
    "token": "{{ $json.Token }}"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Use AWS SNS to create/delete topics, publish messages to topics, and manage subscriptions with protocols like email, SMS, SQS, and Lambda.

Behavior notes

  • FIFO topics name themselves. Turn on the FIFO Topic option and the .fifo suffix is appended to the topic name for you if you left it off.
  • Get Many follows pagination. With Return All on, every page is fetched; with it off, results stop at Limit.
  • Deleting a topic is idempotent — it reports success: true whether or not the topic still existed.

Common patterns

  • Topic lifecycle: create the topic, switch the resource to Subscription to attach endpoints, then publish to the topic ARN.
  • Subscription lifecycle: create the subscription, confirm it with the token the endpoint receives if the protocol requires confirmation, and use Get Many to audit which endpoints are still attached.
  • FIFO topics: set a Message Group ID on every publish, and a Message Deduplication ID unless the topic uses content-based deduplication.

Protocol-specific endpoints

  • HTTP/HTTPS — a full URL, e.g. https://example.com/webhook
  • Email / Email-JSON — an email address, e.g. user@example.com
  • SMS — a phone number in E.164 form, e.g. +1234567890
  • SQS / Lambda / Application — the full ARN of the target resource

Frequently asked questions

What credentials does this node require?

It uses BusyBot's built-in AWS credential type, so you configure your AWS access key ID, secret, and region once in your credentials store and reference it here. No SNS-specific setup is needed beyond ensuring your IAM policy grants the SNS actions your workflow will call.

If I create a FIFO topic, do I need to add the `.fifo` suffix to the topic name myself?

No. When you enable the FIFO Topic option, the node automatically appends `.fifo` to the topic name if you left it off. You still need to set a Message Group ID on every Publish call to that topic, and a Message Deduplication ID unless the topic uses content-based deduplication.

What happens if I try to delete a topic that no longer exists?

The node returns `success: true` regardless. Deleting an SNS topic is idempotent by design, so you can safely use a delete step in a cleanup workflow without adding a prior existence check.

What format does the endpoint need to be in when creating a subscription?

It depends on the protocol. HTTP and HTTPS subscriptions take a full URL (e.g. `https://example.com/webhook`), email and email-json take an address like `user@example.com`, SMS takes an E.164 phone number like `+1234567890`, and SQS, Lambda, and Application subscriptions each take the full ARN of the target resource.

How does fetching a list of topics or subscriptions work when there are many results?

The Get Many operation follows SNS pagination automatically. Turn on Return All to retrieve every page in sequence, or leave it off and set a Limit to cap the result count. The node surfaces results through its Output path; any API-level error comes through the separate Error output.

Build with the AWS SNS node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need AWS credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.