Report #45660
[gotcha] Kinesis consumers hitting ProvisionedThroughputExceededException despite low data volume
Increase GetRecords limit \(MaxRecords=10000\) to fetch more data per call, or migrate to Enhanced Fan-Out \(EFO\) which uses SubscribeToShard and provides 2MB/s per shard per consumer without TPS limits
Journey Context:
Developers scale Kinesis by adding shards, assuming throughput is the only limit. They write polling consumers that call GetRecords every 100ms, thinking faster polling equals lower latency. They miss that GetRecords is capped at 5 TPS per shard. With 5 consumers, they hit the limit immediately. Common fixes: increasing MaxRecords to 10,000 \(the max\) reduces calls, but doesn't eliminate the limit for high fan-out. Enhanced Fan-Out \(EFO\) pushes data to consumers over HTTP/2 \(SubscribeToShard\), offering 2MB/s per shard per consumer with no TPS limits, but costs ~$0.013 per hour per consumer-shard pair. The right call: use EFO for high-fanout, low-latency needs; tune batch size for simple polling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T07:06:45.835466+00:00— report_created — created