Instiq
Chapter 1 · Data Ingestion and Transformation·v2.1.0·Updated 6/14/2026·~10 min

What's changed: In-scope coverage: added ingestion/migration services (AppFlow/Data Exchange/API Gateway/DataSync/Transfer Family/MGN/Discovery/Snow Family)

1.1Data Ingestion (Batch and Streaming)

Key points

Understand batch ingestion (scheduled, bulk) vs. streaming ingestion (continuous, near real-time), and choosing among Kinesis Data Streams / Data Firehose / MSK. The starting point for "Data Ingestion and Transformation" in DEA-C01.

The first step of data engineering is how to ingest data. It splits broadly into batch (scheduled, bulk) and streaming (continuous, near real-time).

1.1.1Batch and streaming

Diagram contrasting batch (scheduled, bulk, Glue/EMR/DMS, "process on a schedule") with streaming (continuous, near real-time, Kinesis/MSK, "process events as they arrive").
Batch vs. streaming ingestion
  • Batch: process large data in bulk at intervals; use Glue, EMR, DMS (DB migration/replication), etc.
  • Streaming: process events continuously as they arrive; use Kinesis or MSK (Kafka).
  • Kinesis Data Streams: durable and replayable; parallelize via shards, process with custom consumers.
  • Data Firehose: no-code delivery to S3/Redshift (with buffering). MSK is managed Apache Kafka.
Exam point

Common on DEA: no-code stream delivery to S3/Redshift = Data Firehose, need replay/custom processing = Kinesis Data Streams, migrate existing Kafka = MSK, migrate/replicate a whole DB = DMS.

For ingestion, first decide "batch vs. streaming," then for streaming choose by whether you need retention/replay. Batch uses AWS Glue (serverless Spark), EMR (your own Hadoop/Spark cluster), and AWS DMS (DB migration and continuous replication, with CDC (change data capture) to ingest only deltas). Streaming uses Kinesis Data Streams (durable, replayable, parallel via shards, consumed by KCL/KPL or Lambda, scaled by on-demand/provisioned capacity modes), Data Firehose (no-code delivery to S3/Redshift/OpenSearch, buffering by size/time, Lambda transforms, Parquet conversion, no replay retention), and MSK (managed Apache Kafka, good for migrating Kafka assets). The core axes: "deliver as-is to a store = Firehose," "custom processing/multiple consumers/replay = Data Streams," "Kafka-compatibility required = MSK." For small, event-driven volumes, Lambda can ingest directly.

RequirementUse
No-code delivery to S3/RedshiftData Firehose
Replay/custom/multi-consumerKinesis Data Streams
Migrate existing KafkaMSK
Migrate/sync a whole DBDMS (CDC)
Example

Scenario: ingest IoT events near real-time and re-analyze later. Ingest with Kinesis Data Streams (replayable within retention, parallel via shards). Run a parallel path that just lands data in an S3 data lake via Data Firehose (buffer + Lambda for Parquet). Continuously sync an on-prem RDB with DMS CDC, ingesting only deltas.

Note

Q. No-code delivery? Data Firehose. Q. Replay/custom processing? Kinesis Data Streams. Q. Existing Kafka? MSK. Q. Delta DB sync? DMS (CDC). Q. Can Firehose replay? No—retention is Data Streams’ job.

Warning

Watch the mix-ups: (1) Firehose doesn’t retain for replay—use Data Streams if you need reprocessing. (2) Data Streams throughput is set by shard count (or on-demand); shortfalls cause ProvisionedThroughputExceeded/hot shards. (3) DMS is migration + ongoing sync (CDC), not a streaming backbone. (4) Firehose has a minimum buffer delay—not truly instantaneous.

Note

Kinesis Data Streams retains data for a period (enabling replay), while Firehose focuses on delivery and does not retain for replay. Choose by requirement.

1.1.2Section summary

  • Batch (Glue/EMR/DMS) / streaming (Kinesis/MSK)
  • Delivery-focused = Firehose, replayable = Data Streams

Sign in to track progress — Log in.

Quick check

(just a quick review)

Q1. You want to deliver streaming data to S3 or Redshift without writing code. Which fits best?

Q2. You want to replay streaming data later and process it in parallel with custom consumers. What do you use?

Q3. You want to migrate an existing on-prem Apache Kafka to a managed AWS service. What do you use?

Check your understandingPractice questions for Chapter 1: Data Ingestion and Transformation