SQS vs SNS vs EventBridge vs Kinesis
Amazon SQS, Amazon SNS, Amazon EventBridge and Amazon Kinesis Data Streams all move data between parts of an application, which is why exam questions love to mix them up. The trick is to read the requirement: does one consumer pull work from a buffer, should many subscribers get a copy, should events be routed by content, or is it a continuous stream that several apps read and replay?
This page turns that into a quick decision table, a side-by-side comparison and the traps that show up in SAA-C03 and DVA-C03 (DVA-C02 until Nov 30) questions. You will also see where Amazon Data Firehose fits in the Kinesis vs Firehose question, and where Apache Kafka (Amazon MSK) comes in when someone asks SQS vs Kafka.
Reviewed against the AWS documentation
At a glance
Amazon SQS
A hosted message queue that decouples producers from consumers. Consumers pull messages, process them and delete them.
- Buffering work so a slow or failing consumer does not lose messages
- Spreading jobs across a pool of workers
- Strict ordering within a message group (FIFO queues)
Amazon SNS
A publish/subscribe service. Publishers send to a topic and SNS pushes a copy to every subscriber, including other applications and people.
- Fanout: one message to many SQS queues, Lambda functions or HTTP endpoints
- Alerts by email, SMS or mobile push
- Filtering so each subscriber receives only the messages it cares about
Amazon EventBridge
A serverless event router. Events from AWS services, your own apps or SaaS providers go to an event bus, and rules (or subscribers on the newer Custom Event Bus) send matching events to targets.
- Reacting to AWS service events (for example an EC2 state change)
- Content-based routing from many sources to many targets
- Archiving and replaying events, and scheduled tasks with EventBridge Scheduler
Amazon Kinesis Data Streams
A service for collecting and processing large streams of records in real time. Records are stored in shards and stay readable for a retention period.
- Clickstreams, logs and metrics that need real-time processing
- Several independent applications reading the same data
- Re-reading records within the retention period
Which one does the question want?
| If the question says | Pick | Why |
|---|---|---|
| Buffer orders so a slow backend does not drop requests, and one worker handles each order | SQS | A queue holds messages until a consumer receives and deletes them, so producers and consumers can run at different speeds. Docs |
| One order event must reach billing, shipping and analytics at the same time | SNS | Publishing to a topic replicates the message to every subscriber. The classic pattern is SNS fanout to several SQS queues. Docs |
| Send an email or SMS when a CloudWatch alarm fires | SNS | SNS delivers application-to-person messages straight to email, SMS and mobile push subscribers, and CloudWatch alarms notify people through an SNS topic. Docs |
| Run a Lambda function whenever an EC2 instance changes state | EventBridge | AWS services send events to the default event bus, and a rule with an event pattern sends the matching ones to a target such as Lambda. Docs |
| Route events by their content to different targets and replay them later after a bug fix | EventBridge | Rules match on event patterns, and an archive lets you replay events to the bus that received them. The newer Custom Event Bus keeps events itself, so a subscriber can start again from an earlier point. Docs |
| Ingest clickstream data in real time and let several apps read it, each at its own pace | Kinesis | Records stay in the stream for the retention period, and multiple applications can read the same stream independently. Docs |
| Process messages in the exact order they were sent, per customer | SQS | FIFO queues deliver messages in order within each message group and support deduplication. Docs |
| Each subscriber should only receive messages that match its own filter | SNS | A filter policy on each subscription decides which messages that subscriber receives. Docs |
SQS vs SNS
SQS is a queue: messages wait until a consumer pulls them, and each message is handled by one consumer and then deleted. SNS is publish/subscribe: SNS pushes a copy of every message to every subscriber straight away and does not hold messages for consumers to pull (only FIFO topics can archive messages and replay them).
If one piece of work needs one worker, pick SQS. If one event needs to reach several systems or people, pick SNS. Many exam answers use both: an SNS topic fanning out to one SQS queue per consumer.
Kinesis Data Streams vs Firehose
Kinesis Data Streams stores records for a retention period so your own applications can read them, several at once and more than once. Amazon Data Firehose has no consumers to write: it buffers incoming data and delivers it to a destination such as Amazon S3, Amazon Redshift, OpenSearch Service, Splunk or an HTTP endpoint.
If the question needs custom real-time processing or replay, pick Kinesis Data Streams. If it says "load streaming data into S3 or Redshift with no code to manage", pick Firehose. They also chain: a Firehose stream can read from a Kinesis data stream.
Side by side
Exam traps
Choosing SQS when many consumers each need every message
An SQS message is processed by one consumer and then deleted, so several consumers share the work rather than each getting a copy. For a copy to each, publish to SNS and subscribe one SQS queue per consumer (fanout), or use Kinesis if they need to read the same records independently.
AWS docsPicking SNS for ordered processing without FIFO
Standard SNS topics and standard SQS queues only give best-effort ordering, and standard queues deliver at least once. When order matters, look for SQS FIFO queues, or an SNS FIFO topic feeding SQS FIFO queues, which delivers in order and only once.
AWS docsKinesis Data Streams vs Amazon Data Firehose
Kinesis Data Streams stores records so your own consumers can read and re-read them. Amazon Data Firehose has no consumers to write: it buffers data and delivers it to destinations such as S3, Redshift or OpenSearch Service. If the question says "load into S3 with no custom code", think Firehose.
AWS docsForgetting EventBridge for AWS service events and schedules
When a requirement says "when an AWS resource changes state" or "run on a schedule", EventBridge is usually the answer: AWS services send events to the default event bus, and EventBridge Scheduler runs cron, rate and one-time schedules. SNS is for notifying subscribers, and SQS does not generate events on its own.
AWS docsSQS vs Kafka: reaching for Amazon MSK when the question is about simple decoupling
Amazon MSK runs open-source Apache Kafka, which fits teams that already use Kafka tooling. For plain decoupling on AWS with nothing to manage, SQS is the simpler answer; for AWS-native real-time streaming, Kinesis is.
AWS docs
Practice it
Frequently Asked Questions
What is the difference between SQS and SNS?
SQS is a queue: consumers pull messages and each message is processed by one consumer. SNS is publish/subscribe: SNS pushes a copy of each message to every subscriber. They work well together, with an SNS topic fanning out to several SQS queues.
When do I use EventBridge instead of SQS?
Use EventBridge when you need to route events by their content from AWS services, your apps or SaaS providers to targets, or run schedules. Use SQS when you need a durable buffer that consumers pull from at their own pace. The two combine well, because SQS can be an EventBridge target.
What is the difference between Kinesis Data Streams and Firehose?
Kinesis Data Streams keeps records for a retention period (24 hours by default, up to 365 days) so you can build consumers that read them, even several at once. Amazon Data Firehose is a delivery service that buffers streaming data and loads it into destinations like S3 without you writing consumer code.
How does SQS compare with Kafka?
SQS is a fully managed queue with nothing to size, while Amazon MSK is a managed Apache Kafka service that runs open-source Kafka, so existing Kafka applications work unchanged. On SAA-C03, pick SQS for simple decoupling and MSK when the question mentions Kafka. MSK is not on the DVA-C03 service list, so expect SQS, SNS, EventBridge and Kinesis there.
Which service guarantees message ordering?
SQS FIFO queues keep order within a message group. SNS FIFO topics deliver in order to SQS FIFO queue subscribers. In Kinesis Data Streams, the partition key decides the shard, and records with the same partition key are ordered there by sequence number. On EventBridge, only the newer Custom Event Bus offers ordering, through FIFO subscribers and event groups.