Reference · Tools
AWS SNS
Manage Amazon SNS topics and publish messages
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
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires AWS credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Topic | topic |
| Subscription | subscription |
Operations
| Resource | Operation | Value | Description |
|---|---|---|---|
| Topic | Create | create | Create a new SNS topic |
| Topic | Delete | delete | Delete an SNS topic |
| Topic | Get Many | getAll | List all SNS topics |
| Topic | Publish | publish | Publish a message to a topic |
| Subscription | Create | create | Subscribe an endpoint to a topic |
| Subscription | Delete | delete | Unsubscribe from a topic |
| Subscription | Get Many | getAll | List subscriptions for a topic |
| Subscription | Confirm | confirm | Confirm a pending subscription |
Parameters
Topic: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic Name | string | Yes | — | Name for the new SNS topic. Supports expressions. |
Options (options) | collection | No | {} | Extra attributes applied when the topic is created. |
| — Display Name | string | No | — | The display name to use for a topic with SMS subscriptions. |
| — FIFO Topic | boolean | No | false | Whether to create a FIFO (first-in-first-out) topic. FIFO topics provide strict message ordering and deduplication. |
Topic: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic ARN | string | Yes | — | The ARN of the SNS topic. Find in AWS Console > SNS > Topics. Supports expressions. |
Topic: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Topic: Publish
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic ARN | string | Yes | — | The ARN of the SNS topic. Find in AWS Console > SNS > Topics. Supports expressions. |
| Subject | string | Yes | — | Subject line when the message is delivered to email endpoints. |
| Message | string | Yes | — | The message body to publish to the topic. |
Options (publishOptions) | collection | No | {} | Extra publishing options, mainly for FIFO topics and per-protocol payloads. |
| — Message Group ID | string | No | — | Required for FIFO topics. Tag that specifies the message belongs to a specific message group. |
| — Message Deduplication ID | string | No | — | Token used for deduplication of sent messages. Required for FIFO topics without content-based deduplication. |
| — Message Structure | options | No | — | Set 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic ARN | string | Yes | — | The ARN of the SNS topic. Supports expressions. |
| Protocol | options | Yes | https | The protocol to use for the subscription endpoint. |
Options: http, https, email, email-json, sms, sqs, lambda, application | ||||
| Endpoint | string | Yes | — | The 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Subscription ARN | string | Yes | — | The ARN of the subscription to delete. Supports expressions. |
Subscription: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic ARN | string | Yes | — | The ARN of the SNS topic. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Subscription: Confirm
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Topic ARN | string | Yes | — | The ARN of the SNS topic. Supports expressions. |
| Token | string | Yes | — | The token from the subscription confirmation message sent by SNS. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum 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 / Operation | Fields added to the item |
|---|---|
Topic / create | TopicArn |
Topic / delete | success: true |
Topic / publish | MessageId, plus SequenceNumber on FIFO topics |
Topic / getAll | One 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 / create | SubscriptionArn — pending confirmation until the endpoint owner confirms |
Subscription / delete | success: true |
Subscription / getAll | One item per subscription, each with SubscriptionArn, Owner, Protocol, Endpoint and TopicArn. When the topic has no subscriptions, a single item with subscriptions: [] |
Subscription / confirm | SubscriptionArn — 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
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes 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
.fifosuffix 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: truewhether 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 BusyBotLast updated . Spotted something wrong? Tell us.