dataonaws
— Stack · Streaming

Amazon Kinesis

The AWS-native event stream. Producers write records; the stream holds them in shards for 24 hours to 365 days; many consumers read the same records independently, each at their own position. You run it in on-demand mode, where AWS scales the shards, or provisioned mode, where you set the shard count yourself.

How it fits

Producers write once. Every consumer reads the same records, at its own pace.

PRODUCERSKINESIS DATA STREAMSCONSUMERSDESTINATIONSApp, SDK, KPLPutRecordsKinesis Agentlog tailerIoT, clickstreamevents, metricsShardspartitioned by key1 MB/s write per shard2 MB/s read per shard24 h to 365 d retentionorder kept per shardShared reads2 MB/s split, polledEnhanced fan-out2 MB/s each, pushedLambdapoll, batch triggerKCL appyour own codeManaged FlinkSQL or stateful jobFirehoseno-code deliveryYour servicesdatabases, APIs, alertsS3, OpenSearchresults of the Flink jobS3, Redshift, SplunkIceberg incl. S3 Tablesany consumer can read shared or with enhanced fan-out · order preserved within a shard, not across shards

A record carries a partition key; Kinesis hashes it to one shard, which fixes ordering per key and read capacity. Standard (shared) consumers call GetRecords and split one shard's 2 MB/s read budget between them, with a 5-calls-per-second ceiling. Enhanced fan-out gives each registered consumer its own 2 MB/s per shard over a push stream (SubscribeToShard), at extra cost. S3 Tables and plain-S3 delivery require on-demand mode.

Four ways to consume

Lambda, Flink, Firehose or your own code.

Serverless

Lambda

Kinesis invokes your function with a batch of records. No code to poll or checkpoint; good for transforms, filtering and fan-out to other services. Scales with shards.

Stateful

Managed Flink

Apache Flink for aggregations, joins and windows over the stream, with state kept across records. Use it when a single record is not enough to decide.

No-code sink

Firehose

Reads the stream and lands it in S3, Redshift, OpenSearch or Splunk, with buffering, format conversion and compression. No consumer code at all.

Your code

KCL app

The Kinesis Client Library handles shard assignment, checkpointing and rebalancing across workers, so your code just processes records. The most control, the most to run.

The three choices that matter

Capacity mode and read pattern set the bill.

01

On-demand or provisioned capacity

On-demand bills per GB in and out plus a per-stream hour; it absorbs spiky or unknown traffic with no sizing. Provisioned bills per shard-hour; it is cheaper for steady, predictable load you can forecast. You can flip a stream between the two twice in 24 hours.

02

How many shards

In provisioned mode each shard gives 1 MB/s or 1,000 records/s of write and 2 MB/s of read. Throughput and cost scale linearly with the shard count, so size to peak write rate and to the number of shared-read consumers.

03

Shared reads or enhanced fan-out

Shared consumers divide one shard's 2 MB/s between them and poll; add a third and they all slow down. Enhanced fan-out gives each registered consumer its own 2 MB/s per shard, pushed with lower latency, at a per-consumer-shard-hour and per-GB charge. Up to 20 registered consumers per stream.

Prices are US East (N. Virginia), provisioned and On-demand Standard; On-demand Advantage has its own rates. Visual values are illustrative.

What you pay

A Kinesis Data Streams bill, by mode.

Provisioned shard
$0.015 / shard-hr
Each shard, per hour; one shard = 1 MB/s write, 2 MB/s read
+
On-demand data
$0.08 in, $0.04 out
Per GB written and per GB read, plus $0.04 per stream-hour (On-demand Standard)
+
PUT payload (prov.)
$0.014 / million units
Provisioned mode only; one 25 KB chunk of a record is one unit
+
Enhanced fan-out
$0.015 + $0.013/GB
Per consumer-shard-hour plus per GB retrieved (provisioned mode)
+
Extended retention
$0.020 / shard-hr
Beyond the free 24 hours up to 7 days (provisioned); long-term to 365 days billed per GB-month
What we see in production
On-demand chosen for a steady, predictable workload.On-demand pays for elasticity you are not using; forecastable load is cheaper on provisioned shards.
A hot partition key sending most records to one shard.One shard caps at 1 MB/s however many you provision; pick a high-cardinality key so records spread evenly.
Three shared consumers reading the same stream, all slow.They split 2 MB/s per shard and compete on GetRecords; move latency-sensitive ones to enhanced fan-out.
Default 24-hour retention, then a consumer falls behind for a day.Records past the window are gone; raise retention to cover your worst consumer lag, not just the happy path.
Kinesis used where one durable queue would do.Kinesis fits replay and many independent readers; for a single work queue with per-message delete, SQS is simpler and cheaper.
How we help

Industrial-grade data pipelines

Use cases in production, not POCs: tests, CI/CD, lineage, on-call that sleeps at night.

Read the approach →
PDF · coming soon

The one-page Amazon Kinesis field guide.

Best practices, cost traps and performance checks, in the order you should run them. Printable, no fluff.

One email when the PDF is ready. Nothing else unless you tick the box.