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