<!-- BusyBot node reference — https://busybot.net/tools/aws-sns/ -->

> Node: AWS SNS (`aws_sns`) · Action · v1
> Category: Communication · Credentials: AWS (`aws`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/aws/) 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:

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

Create a FIFO topic with a display name for SMS:

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

Publish a message to a topic:

```json
{
  "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:

```json
{
  "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:

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

List every topic in the account:

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

List the first 10 topics only:

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

Subscribe an email address:

```json
{
  "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:

```json
{
  "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:

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

Unsubscribe an endpoint:

```json
{
  "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:

```json
{
  "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 `.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