From aws-dev-toolkit
Deep-dive into AWS messaging services including SQS, SNS, and EventBridge. Use when designing event-driven architectures, choosing between messaging services, configuring queues and topics, implementing fan-out patterns, setting up dead-letter queues, or troubleshooting message delivery issues.
npx claudepluginhub aws-samples/sample-claude-code-plugins-for-startups --plugin aws-dev-toolkitThis skill uses the workspace's default tool permissions.
You are an AWS messaging specialist. Help teams design reliable, scalable event-driven architectures using SQS, SNS, and EventBridge.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
You are an AWS messaging specialist. Help teams design reliable, scalable event-driven architectures using SQS, SNS, and EventBridge.
aws-docs MCP tools to verify current service limits and features| Requirement | Use |
|---|---|
| Decouple producer from consumer, 1-to-1 | SQS |
| One message, multiple subscribers | SNS + SQS (fan-out) |
| Ordered, exactly-once processing | SQS FIFO |
| Event routing based on content | EventBridge |
| Cross-account/cross-region events | EventBridge |
| Schema registry and discovery | EventBridge |
| Simple mobile/email push notifications | SNS |
| Replay past events | EventBridge Archive + Replay |
Opinionated guidance:
| Feature | Standard | FIFO |
|---|---|---|
| Throughput | Unlimited | 300 msg/s (3,000 with batching, or high-throughput mode for higher) |
| Ordering | Best-effort | Strict within message group |
| Delivery | At-least-once (rare duplicates) | Exactly-once |
| Deduplication | None | 5-minute dedup window (content or ID based) |
Use Standard unless you need ordering or exactly-once. The throughput difference is significant.
ChangeMessageVisibility to extend it before timeout expires.maxReceiveCount to 3-5 for most workloads (how many times a message is retried before going to DLQ).ApproximateNumberOfMessagesVisible on your DLQ — it should normally be 0.WaitTimeSeconds=20). Short polling queries a subset of SQS servers and returns immediately — most responses are empty. At 4 polls/second that is ~345,600 empty API calls/day per consumer, each billed at the standard SQS rate. Long polling holds the connection open for up to 20 seconds and queries all servers, reducing empty responses by ~90% and cutting SQS API costs proportionally.ReceiveMessage with MaxNumberOfMessages=10 and SendMessageBatch for up to 10 messages.prefix, anything-but, numeric, exists operators for flexible matching{
"order_type": ["premium"],
"amount": [{"numeric": [">", 100]}],
"region": [{"prefix": "us-"}]
}
{
"source": ["my.application"],
"detail-type": ["OrderPlaced"],
"detail": {
"amount": [{"numeric": [">", 100]}],
"status": ["CONFIRMED"]
}
}
Service A --event--> EventBridge --rule--> Service B --event--> EventBridge --rule--> Service C
Each service publishes events and reacts to events. Use DLQs on every consumer.
API Gateway --> SQS --> Lambda (batch processing)
SQS absorbs traffic spikes. Lambda processes at a controlled concurrency.
Producer --> SNS Topic --> SQS Queue A (filter: premium)
--> SQS Queue B (filter: standard)
--> Lambda (filter: all, for analytics)
# SQS: Create standard queue with DLQ
aws sqs create-queue --queue-name my-dlq
aws sqs create-queue --queue-name my-queue \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:123456789012:my-dlq\",\"maxReceiveCount\":\"3\"}",
"VisibilityTimeout": "300",
"ReceiveMessageWaitTimeSeconds": "20"
}'
# SQS: Send and receive
aws sqs send-message --queue-url <url> --message-body '{"key":"value"}'
aws sqs receive-message --queue-url <url> --wait-time-seconds 20 --max-number-of-messages 10
# SQS: Check queue depth
aws sqs get-queue-attributes --queue-url <url> \
--attribute-names ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible
# SQS: Purge queue (deletes all messages)
aws sqs purge-queue --queue-url <url>
# SNS: Create topic and subscribe SQS
aws sns create-topic --name my-topic
aws sns subscribe --topic-arn <topic-arn> --protocol sqs --notification-endpoint <queue-arn>
# SNS: Publish with attributes (for filtering)
aws sns publish --topic-arn <topic-arn> \
--message '{"order":"123"}' \
--message-attributes '{"order_type":{"DataType":"String","StringValue":"premium"}}'
# SNS: Set filter policy on subscription
aws sns set-subscription-attributes \
--subscription-arn <sub-arn> \
--attribute-name FilterPolicy \
--attribute-value '{"order_type":["premium"]}'
# EventBridge: Put custom event
aws events put-events --entries '[{
"Source": "my.application",
"DetailType": "OrderPlaced",
"Detail": "{\"orderId\":\"123\",\"amount\":150}",
"EventBusName": "default"
}]'
# EventBridge: Create rule
aws events put-rule --name my-rule \
--event-pattern '{"source":["my.application"],"detail-type":["OrderPlaced"]}'
# EventBridge: Add target to rule
aws events put-targets --rule my-rule \
--targets '[{"Id":"1","Arn":"arn:aws:sqs:us-east-1:123456789012:my-queue"}]'
# EventBridge: List rules
aws events list-rules --event-bus-name default
WaitTimeSeconds=20) queries all servers and holds the connection, reducing empty responses by ~90%.ApproximateNumberOfMessagesVisible > 0.references/integration-patterns.md — Architectural patterns (fan-out, saga choreography/orchestration, CQRS, queue-based load leveling, event sourcing, claim-check, competing consumers) with diagrams and service mappingslambda — Lambda as SQS/SNS/EventBridge consumer, event source mappingsstep-functions — Orchestrated saga pattern, workflow coordinationdynamodb — DynamoDB Streams as event source, event sourcing storeobservability — Queue depth alarms, DLQ monitoring, message age alertsapi-gateway — API Gateway to SQS/SNS integration for async APIs