Event-driven architecture
EventBridge vs SQS vs SNS
AWS has three messaging services that overlap in confusing ways. Compare them side-by-side or answer questions about your architecture to get a clear recommendation.
EventBridge
SQS
SNS
Best For
EventBridge
- Event-driven routing across AWS services
- SaaS integrations (Shopify, Zendesk, Auth0)
- Cross-account / cross-region event bus
- Content-based routing to multiple targets
SQS
- Decoupling producers from consumers
- Work queues with guaranteed processing
- Rate-limiting downstream services
- Reliable async job processing
SNS
- Fan-out to multiple subscribers
- Push notifications (SMS, email, mobile)
- Pub/sub broadcasting
- Combining with SQS for fan-out + queuing
- Event-driven routing across AWS services
- SaaS integrations (Shopify, Zendesk, Auth0)
- Cross-account / cross-region event bus
- Content-based routing to multiple targets
- Decoupling producers from consumers
- Work queues with guaranteed processing
- Rate-limiting downstream services
- Reliable async job processing
- Fan-out to multiple subscribers
- Push notifications (SMS, email, mobile)
- Pub/sub broadcasting
- Combining with SQS for fan-out + queuing
Pricing
EventBridge
$1.00 per million events. Schema discovery and archive priced separately.
SQS
$0.40 per million requests (Standard) / $0.50 per million (FIFO). First 1M requests/month free.
SNS
$0.50 per million publishes. Delivery costs vary: SQS/Lambda free, HTTP $0.06/M, SMS varies by country.
$1.00 per million events. Schema discovery and archive priced separately.
$0.40 per million requests (Standard) / $0.50 per million (FIFO). First 1M requests/month free.
$0.50 per million publishes. Delivery costs vary: SQS/Lambda free, HTTP $0.06/M, SMS varies by country.
Max Message Size
EventBridge
256 KB per event.
SQS
256 KB per message. Up to 2 GB via Extended Client Library (payload stored in S3).
SNS
256 KB per message.
256 KB per event.
256 KB per message. Up to 2 GB via Extended Client Library (payload stored in S3).
256 KB per message.
Ordering
EventBridge
No ordering guarantees. Events may arrive out of order.
SQS
Standard: best-effort ordering. FIFO: strict ordering within message groups.
SNS
Standard topics: no ordering. FIFO topics: strict ordering within message groups.
No ordering guarantees. Events may arrive out of order.
Standard: best-effort ordering. FIFO: strict ordering within message groups.
Standard topics: no ordering. FIFO topics: strict ordering within message groups.
Filtering
EventBridge
Content-based filtering on any event field using event patterns (prefix, numeric, exists, etc.).
SQS
No built-in content filtering. Consumer receives all messages and filters in application code.
SNS
Subscription filter policies on message attributes or body. Supports exact, prefix, numeric, and exists matching.
Content-based filtering on any event field using event patterns (prefix, numeric, exists, etc.).
No built-in content filtering. Consumer receives all messages and filters in application code.
Subscription filter policies on message attributes or body. Supports exact, prefix, numeric, and exists matching.
Targets / Consumers
EventBridge
20+ AWS targets natively: Lambda, Step Functions, SQS, SNS, API Gateway, Kinesis, CodePipeline, and more.
SQS
Pull-based: one consumer polls the queue. Multiple consumers compete for messages (competing-consumer pattern).
SNS
Push to SQS, Lambda, HTTP/S endpoints, email, SMS, and mobile push. Up to 12.5M subscriptions per topic.
20+ AWS targets natively: Lambda, Step Functions, SQS, SNS, API Gateway, Kinesis, CodePipeline, and more.
Pull-based: one consumer polls the queue. Multiple consumers compete for messages (competing-consumer pattern).
Push to SQS, Lambda, HTTP/S endpoints, email, SMS, and mobile push. Up to 12.5M subscriptions per topic.
Retry Behavior
EventBridge
Built-in retry with exponential backoff (up to 24 hours, 185 attempts). Dead-letter queue support.
SQS
Visibility timeout controls retry. Message reappears after timeout if not deleted. Configurable DLQ with maxReceiveCount.
SNS
Retries vary by protocol — Lambda gets 3 attempts, HTTP gets configurable retries with backoff. DLQ support for Lambda/SQS targets.
Built-in retry with exponential backoff (up to 24 hours, 185 attempts). Dead-letter queue support.
Visibility timeout controls retry. Message reappears after timeout if not deleted. Configurable DLQ with maxReceiveCount.
Retries vary by protocol — Lambda gets 3 attempts, HTTP gets configurable retries with backoff. DLQ support for Lambda/SQS targets.
Design an event-driven order pipeline
Practice the saga pattern, message queues, and async processing in our Blueprint Bay system design challenges — with simulated traffic and failure scenarios.
Try Blueprint Bay free →