Skip to content
GitHubXDiscord

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.

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

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"
});

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

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"
}
}
});

Create a subscription that delivers raw messages without JSON formatting.

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
});

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

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
}
});