Kinesis Data Streams pricing in 2026

Akal Cloud Updated 11 min read

Quick answer

Amazon Kinesis Data Streams bills provisioned capacity at $0.015 per shard hour and on-demand capacity at $0.040 per stream hour in AWS's US East worked examples. An empty on-demand stream costs $28.80 a month, which buys 2.67 shards. Above roughly 3.6% average shard utilisation, provisioned mode is cheaper than On-demand Standard at any scale, and AWS publishes both rates without ever publishing that crossing point. A 1 KB record bills as a full 25 KB payload unit.

Amazon Kinesis Data Streams bills provisioned capacity at $0.015 per shard hour and on-demand capacity at $0.040 per stream hour, in AWS's own US East worked examples. That single comparison decides most Kinesis bills: an empty on-demand stream costs $28.80 a month, which buys 2.67 shards. Above roughly 3.6% average shard utilisation, provisioned mode is cheaper than On-demand Standard at any scale, and AWS publishes the rates without ever publishing that crossing point.

How much does Amazon Kinesis Data Streams cost per shard hour and per stream hour?

Every rate below comes from the prose worked examples on the Kinesis Data Streams pricing page, US East: "One shard costs $0.015 per hour, or $0.36 per day ($0.015 * 24)" and "Per-stream charges = 30 * 24 * 0.040 (rate) = $28.80". We use that page's own 24-hours-times-30-days convention throughout, which is 720 hours.

Meter (US East, from AWS worked examples)Rate720-hour month
Provisioned shard hour$0.015$10.80 per shard
PUT payload units (25 KB each)$0.014 per millionusage
Extended retention, per shard hour$0.020$14.40 per shard
Long-term retention storage$0.023 per GB-monthusage
Long-term retrieval via GetRecords$0.021 per GBusage
Enhanced fan-out, per consumer-shard hour$0.015$10.80 per shard per consumer
Enhanced fan-out data retrieval$0.013 per GBusage
On-demand Standard, per stream hour$0.040$28.80 per stream
On-demand Standard, data in / data out$0.08 / $0.040 per GBusage
On-demand Advantage, data in / data out$0.032 / $0.016 per GBusage, 25 MB/s floor

Two of those rows are the whole argument: a shard hour is $0.015 and a stream hour is $0.040. There is no free tier to soften either, since "Amazon Kinesis Data Streams is NOT currently available in AWS Free Tier."

At what throughput is Kinesis provisioned mode cheaper than on-demand?

Almost always, and the arithmetic is not close. One shard carries 1 MiB/s for 720 hours, which is 2,531.25 GiB. Through On-demand Standard with a single consumer that traffic costs $303.75. Provisioned, it costs $10.80 of shard hours plus about $1.49 of PUT payload units at 25 KB records, 28 times cheaper for identical bytes.

So the real question is waste. Provisioned mode is sized for peak; on-demand bills the average. The break-even is the average shard utilisation at which the idle shards you paid for cost more than the per-GB rate you avoided. Setting the two monthly totals equal, with one consumer and 25 KB records, gives the table below. It is hypothetical arithmetic on AWS's published rates.

Shards you would provision for peakProvisioned floor per monthOn-demand wins below an average ofAs utilisation
1$10.80neverprovisioned always cheaper
2$21.60neverprovisioned always cheaper
3$32.400.0119 MiB/s0.40%
5$54.000.0834 MiB/s1.67%
10$108.000.2620 MiB/s2.62%
50$540.001.6912 MiB/s3.38%
Any number, in the limit--3.57%

Below three shards the answer is unconditional: an idle On-demand Standard stream bills $28.80 a month and three shards cost $32.40. Above that, on-demand wins only on traffic so spiky that the provisioned fleet sits under about 3.6% average utilisation, a duty cycle of roughly one hour in twenty-eight at full rate.

That is a price argument, not the whole argument. The mode selection guide buys you something real: on-demand splits shards when "the incoming traffic exceeds 500 KB/s per shard", within 15 minutes. It also names its own limit, which is the reason to keep some workloads provisioned: "it does not detect and isolate hash keys that are driving a higher portion of incoming traffic to a particular shard." A hot partition key is not fixed by on-demand mode. You can hedge, because the quotas page allows switching "between the on-demand and provisioned capacity modes twice within 24 hours."

What is a Kinesis PUT payload unit, and why does a 1 KB record cost the same as a 25 KB one?

Because the unit is defined in 25 KB increments and rounds up per record. The pricing page is explicit: "A PUT Payload Unit is counted in 25 KB payload chunks that comprise a record. For example, a 5 KB record contains one PUT Payload Unit, a 45 KB record contains two PUT Payload Units, and a 1 MB record contains 40 PUT Payload Units."

Nothing in that sentence refunds the unused chunk. A 1 KB record is billed as 25 KB, so the same $0.014 per million buys wildly different amounts of real throughput.

Record sizePUT payload unitsBilled asPayload wastedPUT cost per GiB of real data
200 bytes125 KB99.2%$0.07516
1 KB125 KB96.0%$0.01468
25 KB125 KB0.0%$0.00059
26 KB250 KB48.0%$0.00113
35 KB (AWS's example)250 KB30.0%$0.00084

A gigabyte of 1 KB records costs 25 times as much in PUT payload units as a gigabyte of 25 KB records, and the cliff at 26 KB doubles the charge for 4% more data. Take a hypothetical stream of 5,000 records per second at 200 bytes each, one consumer, 720-hour month. That is 0.95 MiB/s, which fits in one shard by bytes but not by records, because "One shard provides an ingest capacity of 1 MB/second or 1,000 records/second". Five shards cost $54.00; the PUT payload units cost $181.44, a 128-fold inflation on the bytes sent and 77% of the provisioned bill. On-demand Standard is about $1,114, because it rounds differently: Data-In bills each record "rounded up to the nearest 1 KB (1,024 bytes)" while Data-Out has "no rounding factor applied for this calculation."

The fix is aggregation, and AWS prices it without noticing. The Kinesis Producer Library concepts page says "With KPL aggregation, you can pack 1,000 records into only 10 Kinesis Data Streams records, reducing the RPS to 10 (at 50 KB each)." That is 1,000 PUT payload units per second becoming 20: the PUT charge falls from $36.29 to $0.73 a month, and the one-shard stream from $47.09 to $11.53. AWS calls aggregation a throughput feature. It is a 50x discount on a billing dimension.

How much do Kinesis extended and long-term data retention cost?

Extended retention costs more per shard hour than the shard does: $0.020 against $0.015, billed by time rather than by bytes. The pricing page says "Once you start extended data retention, you're charged for an additional rate on each shard hour incurred by your data stream." A shard at 24-hour retention is $10.80 a month; at seven days it is $25.20, 2.33 times the price for the same throughput.

Because the meter is shard hours, an underused shard pays the same retention bill as a full one. A shard running flat out holds about 506 GiB beyond the first 24 hours, so its $14.40 is $0.028 per GB-month. At 10% utilisation that $14.40 covers about 51 GiB, an effective $0.284 per GB-month, 12 times the $0.023 long-term retention charges beyond seven days.

Long-term retention flips the model to GB-month and adds $0.021 per GB for retrieval through GetRecords, with a quiet exemption: "You're not charged for long-term data retrieval if enhanced fan-out consumer (SubscribeToShard API) is used." Enhanced fan-out retrieval is $0.013 per GB, so for replaying old data the expensive consumer type is the cheaper one.

Check the default first. The retention period documentation states that "A Kinesis data stream stores records from 24 hours by default, up to 8760 hours (365 days)", and turning it back down destroys data: Kinesis "almost immediately makes records older than the new retention period inaccessible upon decreasing the retention period." For replayable history an archive is a different shape of bill, with its own floors in S3 storage class minimum charges.

What does Kinesis enhanced fan-out cost per consumer-shard hour?

The same $0.015 as the shard itself. The pricing page says consumers using enhanced fan-out "incur hourly charges per consumer-shard hour and per GB of data retrieved", and prices that hour at $0.015, so every registered consumer adds a full copy of your shard bill. On a four-shard stream that is $43.20 a month per consumer on top of $43.20 of shards. The enhanced fan-out guide allows 20 consumers on a provisioned stream: $864.00 a month against $43.20 of shards.

What you buy is latency: shared consumers average "around 1000 ms if you have five consumers" against "an average of 70 ms whether you have one consumer or five consumers". Five shared consumers are slow; five enhanced ones are five times the shard bill.

When is Kinesis On-demand Advantage cheaper than On-demand Standard?

Above about 9.9 MiB/s of average ingest on a single stream, which is almost exactly what AWS recommends without showing the working. Advantage charges $0.032 per GB in and $0.016 per GB out, and "there is a minimum charge of 25MB/s data ingested and 25MB/s data retrieved at the account level across all on-demand streams." That floor is $3,037.50 a month, matching AWS's Advantage example 2 to the cent. On-demand Standard costs $0.12 per GB combined with one consumer plus $28.80 per stream, so it reaches $3,037.50 at 9.91 MiB/s.

AWS's guidance reads: "On-demand Advantage might be best if you have at least 10MB/s of data ingest in aggregate, fanout to more than 2 consumers, use more than 50 streams in an account, or want the capability to set warm throughput for on-demand streams." Two of those four criteria are the break-even. At 50 streams the per-stream charges alone are $1,440 and the crossover falls to 5.26 MiB/s. The claim that Advantage rates are "at least 60% lower than in On-demand Standard" checks out exactly: $0.048 per GB against $0.120.

Provisioned still undercuts Advantage, at 9.00% average shard utilisation instead of 3.57%. This is the same capacity-mode question DynamoDB poses, with the same shape of answer: see DynamoDB on-demand versus provisioned capacity. Queues price the trade differently again, in how SQS pricing works.

Which Kinesis Data Streams charges arrive on another service's line?

Three of them. Enhanced shard-level monitoring is CloudWatch custom metrics. The Kinesis monitoring reference lists seven shard-level metrics and says "There is a charge for enhanced metrics emitted from Kinesis", adding that "The charges are given per shard per metric per month." At the $0.30 per custom metric in the CloudWatch pricing examples, that is $2.10 per shard per month, 19.4% on top of a $10.80 shard, and it lands on the CloudWatch line. The same trap sits behind Container Insights pricing.

A Kinesis Client Library consumer creates a DynamoDB table. The KCL consumer documentation says "Your account is charged for the costs associated with the DynamoDB table, in addition to the costs associated with Kinesis Data Streams itself", and gives the default size: "The KCL creates the table with a provisioned throughput of 10 reads per second and 10 writes per second". At the $0.00065 per WCU-hour and $0.00013 per RCU-hour in the DynamoDB provisioned pricing examples, that lease table is $5.62 a month, 52% of a single shard.

Cross-region reads are charged in on-demand mode only. The pricing page says that in the on-demand modes "you incur additional charges if your consuming applications are reading data from a data stream in a different AWS region", then adds "In Provisioned mode, cross-region data reads do not incur data transfer charges." The capacity mode changes which meters exist, not just their price.

Kinesis is usually the middle of a pipeline, which puts a third bill upstream. VPC Flow Logs publish to CloudWatch Logs, S3 or Amazon Data Firehose, and a CloudWatch Logs subscription filter forwards them into a data stream. That page recommends on-demand mode for the destination, which the arithmetic above makes the expensive default once traffic is steady. Both ends have their own breakdowns: what VPC Flow Logs cost and CloudWatch Logs ingestion pricing.

Where do AWS's own Kinesis pricing examples get the arithmetic wrong?

In three places, all on the pricing page. First, the long-term retention example states "you'll accumulate 3.4 (input rate) * 1,024 * 1,024 * 3,600 = 12,902,400,000 bytes in an hour." That expression evaluates to 12,834,570,240. The answer is right and the expression printed beside it is not. The next line compounds it: "3,565,158 * 23 days * 24 hours/day = 7,122,124,800,000 byte-hours" holds only if the first factor is 12,902,400,000 rather than the 3,565,158 shown.

Second, the same example derives 6,633 GB of stored data, then opens the next paragraph with "you're retrieving 6,623 GB of data". Ten gigabytes evaporate between two sentences: the $139.08 retrieval figure follows the smaller number, while the one the example derived gives $139.29.

Third, the enhanced fan-out example calls $1.26 "the total enhanced fan-out cost" for a two-shard stream read by two consumers for a month. Its own multiplication, 97.6 times $0.013, is $1.2688, which rounds to $1.27. The consumer-shard hours defined in the bullet directly above come to $43.20 for that same stream and month, so a reader who takes the sentence at its word is short by a factor of about 36.

The examples are not comparable to each other either. The provisioned one uses "a month with 31 days" and the On-demand Standard one uses 30, a 3.33% gap from the page alone: the same four-shard stream is $52.14 on one month and $50.46 on the other.

The documentation disagrees with itself on capacity too. The Kinesis FAQ says on-demand streams "automatically scale up to 200 MB/second and 200,000 records per second for writes". The quotas page says that in US East (N. Virginia), US West (Oregon) and Europe (Ireland) they "scale up to 10 GB/s of write and 20 GB/s read throughput", with 200 MB/s applying only to other Regions. The quotas page also contradicts itself inside one table: its PutRecord row gives a shard "a maximum data write total of 10MiB per second" and its PutRecords row, two lines later, gives the same shard "a maximum data write total of 1 MB per second." Size on the 1 MB figure.

Share LinkedIn X Hacker News Reddit

See this on your own bill

Akal Cloud connects in about two minutes and shows the same numbers against your real AWS accounts.

Get started on AWS Marketplace

Related reading