Overcast is alpha — behaviour and APIs may change between releases. Pin your version and read the changelog before upgrading.

overcast

SNS — Simple Notification Service

Quick start, the protocols and delivery behaviour, filter policies and per-subscription dead-letter queues, and where FIFO, mobile push and webhook delivery stop.

Fan-out to SQS, Lambda, email, SMS and webhooks, with filter policies and per-subscription dead-letter queues. Delivery is asynchronous, as on AWS.

Status: ✅ Supported

Quick start

export AWS_ENDPOINT_URL=http://localhost:4566

TOPIC=$(aws sns create-topic --name orders --query TopicArn --output text)
QUEUE=$(aws sqs create-queue --queue-name orders-q --query QueueUrl --output text)
ARN=$(aws sqs get-queue-attributes --queue-url "$QUEUE" \
  --attribute-names QueueArn --query Attributes.QueueArn --output text)

aws sns subscribe --topic-arn "$TOPIC" --protocol sqs --notification-endpoint "$ARN"
aws sns publish --topic-arn "$TOPIC" --message '{"id":1}'
aws sqs receive-message --queue-url "$QUEUE"

Any credentials work; with none configured, run eval "$(overcast env)" first — see Using AWS SDKs and CLI.

What works

AreaBehaviour
Protocolssqs, lambda, email, email-json, sms, http, https
PublishingPublish and PublishBatch (10 per call), with Message and Subject validated as on AWS
Destination selectionExactly one of TopicArn, PhoneNumber or TargetArn, as on AWS
Per-protocol payloadsMessageStructure=json picks the entry keyed by each subscriber’s protocol, falling back to default
Filter policiesFilterPolicy on SetSubscriptionAttributes, matching string and number attributes
Dead-letter queuesA failed delivery goes to the SQS queue named by the subscription’s RedrivePolicy
Failure visibilityA failed delivery is logged and published on the event stream as sns:DeliveryFailed — never silently dropped
Tags and attributesTopic tags, topic attributes, subscription attributes

Email, SMS and webhook deliveries all land in the console’s Inbox, threaded by publish. Publish --phone-number delivers straight there with no topic involved.

Differences from AWS

AreaOn AWSOvercast
ConfirmSubscriptionA token round-trip before delivery startsAuto-confirmed; any token is accepted
FIFO topicsOrdered, deduplicated, with a SequenceNumberParameters are validated, but ordering and dedup are not emulated (#183)
Mobile pushapplication protocol and platform endpointsSubscribe returns 400 InvalidParameter; Publish --target-arn likewise
Kinesis Data Firehosefirehose protocolSubscribe returns 400 InvalidParameter
http/https deliveryPOSTed to the endpointCaptured in the Inbox; nothing is dialled

The full list, including CloudFormation and Lambda delivery semantics, is in Limitations.

Gotchas

Warning

RawMessageDelivery never applies to a lambda subscription — the function always receives the full Records[].Sns event. That matches AWS, and it catches people who set the attribute and expect a bare body.

Operations

22 of 30 listed operations are implemented. Per-operation status, notes and AWS API links: SNS operations.