AWS Data Engineer Associate · Services

Kinesis Data Streams vs Amazon Data Firehose vs Managed Service for Apache Flink

All three sit in the same AWS streaming family and all three show up in Domain 1 of the DEA-C01, but they solve three different problems. Kinesis Data Streams buffers and replays, Amazon Data Firehose delivers, and Managed Service for Apache Flink processes state. Knowing which one a scenario needs is the actual skill being tested.

Last updated July 2026.

What each service actually does

 Kinesis Data StreamsAmazon Data FirehoseManaged Flink
Core jobDurable, ordered, replayable bufferDelivers data to a destinationStateful stream processing
Data retention24 hours default, up to 365 daysNone; no relationship after deliveryDepends on the app's state and checkpoints
ConsumersMultiple independent consumersNone, delivery is the endpointReads from streams like Kinesis or MSK
LatencySub-secondSeconds to minutes (buffered)Sub-second, in-flight
Pricing modelPer shard-hour or per GB (on-demand)Per GB ingested and deliveredPer Kinesis Processing Unit (KPU)

Retention figures from the Kinesis Data Streams developer guide.

Use Kinesis Data Streams when

Multiple independent applications need to read the same stream, you need to replay data from up to a year back, or you need sub-second latency with fine-grained control over sharding and scaling. Data Streams is a durable buffer, not a destination: something still has to read from it and do something with the records.

Use Amazon Data Firehose when

The destination is S3, Redshift, OpenSearch Service, Splunk, Snowflake, or another supported target, and the job is reliable delivery without managing consumers or scaling. Firehose supports light transformation through an attached Lambda function, but once it delivers a record, the service has no further relationship with that data. Reprocessing means reading it back out of wherever it landed, not replaying it from Firehose itself.

Use Managed Service for Apache Flink when

The workload needs windowed aggregations, stream-to-stream joins, exactly-once stateful processing, or anything that has to remember what it saw earlier. Fraud detection, recommendation engines, and real-time ETL that transforms and enriches records before they land are the typical cases. This is the only one of the three that runs your own application logic against the stream rather than moving or delivering data as-is.

They are commonly chained together

A frequent production pattern uses Kinesis Data Streams as the durable entry point, with Managed Service for Apache Flink reading from it as one consumer to do stateful processing, and Amazon Data Firehose reading from it as a separate consumer to land a copy of the raw or processed records into S3 for durable, zero-maintenance archival. This combines low-latency processing with reliable storage without any one service trying to do all three jobs at once.

Where this shows up on the DEA-C01

Domain 1 (Data Ingestion and Transformation) is the largest domain on the exam at 34% of scored questions, and it explicitly lists Kinesis Data Streams for streaming ingestion alongside Amazon MSK. Amazon Data Firehose and Managed Service for Apache Flink both fall inside the same domain's transformation and pipeline task statements. A scenario question that names a specific need (replay, plain delivery, or stateful processing) is almost always testing whether you can tell these three apart, not testing service syntax.

FAQ

What is the main difference between Kinesis Data Streams and Amazon Data Firehose?

Kinesis Data Streams is a durable buffer you read from, with data replayable for up to 365 days and support for multiple independent consumers. Amazon Data Firehose delivers data to a destination and has no further relationship with it once delivered; there is no replay from Firehose itself.

Can Amazon Data Firehose read from Kinesis Data Streams?

Yes. A common pattern uses Kinesis Data Streams as the durable source with Firehose as one of several consumers, delivering a copy of the stream into S3 or another destination.

Do I need Apache Flink coding knowledge for the DEA-C01 exam?

The exam guide lists Managed Service for Apache Flink as an in-scope streaming service under Domain 1. Exam questions test when to choose it over the alternatives, not Flink application code itself.

How long does Kinesis Data Streams retain data by default?

24 hours by default, extendable up to 8,760 hours (365 days) using the IncreaseStreamRetentionPeriod operation, with additional charges for retention above the default.

Get the current names right first

Amazon Data Firehose and Managed Service for Apache Flink both carry renamed identities. If the old names are throwing you off in practice material, the rename explainer covers exactly what changed and what did not.

Read the rename explainer →