Skip to content

Subscription

The Subscription resource lets you manage AWS SNS Subscriptions for receiving messages from SNS topics. Subscriptions can be configured with various protocols to deliver messages to endpoints.

Minimal Example

Create a basic SNS subscription to an existing topic with essential properties.

ts
import AWS from "alchemy/aws/control";

const snsSubscription = await AWS.SNS.Subscription("mySnsSubscription", {
  TopicArn: "arn:aws:sns:us-east-1:123456789012:MyTopic",
  Protocol: "email",
  Endpoint: "user@example.com"
});

Advanced Configuration

Configure an SNS subscription with additional options such as message filtering and delivery policies.

ts
const advancedSnsSubscription = await AWS.SNS.Subscription("advancedSnsSubscription", {
  TopicArn: "arn:aws:sns:us-east-1:123456789012:MyTopic",
  Protocol: "https",
  Endpoint: "https://example.com/notifications",
  FilterPolicy: {
    eventType: ["order_placed", "order_shipped"]
  },
  DeliveryPolicy: {
    healthyRetryPolicy: {
      numRetries: 3,
      minDelayTarget: 20,
      maxDelayTarget: 20,
      numNoDelayRetries: 0,
      numMinDelayRetries: 0,
      backoffFunction: "linear"
    }
  }
});

Raw Message Delivery

Create a subscription that delivers raw messages without JSON formatting.

ts
const rawMessageSnsSubscription = await AWS.SNS.Subscription("rawMessageSubscription", {
  TopicArn: "arn:aws:sns:us-east-1:123456789012:MyTopic",
  Protocol: "sqs",
  Endpoint: "arn:aws:sqs:us-east-1:123456789012:MyQueue",
  RawMessageDelivery: true
});

Replay Policy

Configure a subscription with a replay policy for message retention and replay capabilities.

ts
const replayPolicySnsSubscription = await AWS.SNS.Subscription("replayPolicySubscription", {
  TopicArn: "arn:aws:sns:us-east-1:123456789012:MyTopic",
  Protocol: "lambda",
  Endpoint: "arn:aws:lambda:us-east-1:123456789012:function:myFunction",
  ReplayPolicy: {
    maxReplayDuration: "PT1H", // ISO 8601 duration format
    maxReplayMessages: 100
  }
});