Firehose Buffer Calculator
Work out which Firehose buffer hint fires first, the resulting delivery latency and object size, and the 5 KB record rounding cost.
Inputs
Firehose rounds each record up to the next 5 KB for billing.
Delivery Latency
5s
Buffer Hint That Fires First
Buffer size — it fills before the interval elapses
Objects Delivered per Hour
703
Average Object Size
5.0MB
Billed Ingest per Month
12,359.6GB
Estimated Monthly Cost
$429.50
Step by step
Values used
Records per second = 1,000 records/s; Average record size = 1 KB; Buffer size hint = 5 MB; Buffer interval hint = 300 s; Compressed size as a share of raw = 25 %; Firehose ingestion price per GB = 0.0290 USD; Destination storage price per GB-month = 0.0230 USD
Firehose Buffer
time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency.
5 KB record rounding
billed ingest GB = records/s × ceil(record KB ÷ 5) × 5 × seconds per month ÷ 1,048,576.
Delivery Latency
= 5 s
Buffer Hint That Fires First
= Buffer size — it fills before the interval elapses
Objects Delivered per Hour
= 703
Average Object Size
= 5.0 MB
Billed Ingest per Month
= 12,359.6 GB
Estimated Monthly Cost
= 429.50
How it works
Firehose flushes when either hint is satisfied, whichever comes first, so on a busy stream the size hint dictates latency and on a quiet one the interval does. That single choice sets both your end-to-end freshness and your destination object size, and small objects are what make Athena and Spark queries slow. Billing rounds every record up to 5 KB, so 1 KB records cost five times what their raw volume suggests — confirm the current per-GB rate for your region. Buffer settings are the one Firehose knob that trades latency against query performance and cost simultaneously: a 1 MB buffer gives fresh data and thousands of tiny files, while a 128 MB buffer gives efficient Parquet objects and minutes of lag.
Formulas
Firehose Buffer
time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency.
- buffer size hint
- 1-128 MB of buffered data that triggers a flush
- buffer interval hint
- 60-900 s that triggers a flush even if the buffer is not full
- billed KB
- Each record rounded up to the next 5 KB before the per-GB charge
5 KB record rounding
billed ingest GB = records/s × ceil(record KB ÷ 5) × 5 × seconds per month ÷ 1,048,576.
Frequently Asked Questions
How is Firehose Buffer calculated?
time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency. Firehose flushes when either hint is satisfied, whichever comes first, so on a busy stream the size hint dictates latency and on a quiet one the interval does. That single choice sets both your end-to-end freshness and your destination object size, and small objects are what make Athena and Spark queries slow. Billing rounds every record up to 5 KB, so 1 KB records cost five times what their raw volume suggests — confirm the current per-GB rate for your region.
Why does Firehose Buffer matter?
Buffer settings are the one Firehose knob that trades latency against query performance and cost simultaneously: a 1 MB buffer gives fresh data and thousands of tiny files, while a 128 MB buffer gives efficient Parquet objects and minutes of lag.
What values do I need to enter?
This calculator takes 7 inputs: Records per second, Average record size, Buffer size hint, Buffer interval hint, Compressed size as a share of raw, Firehose ingestion price per GB, Destination storage price per GB-month. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
What object size should I aim for?
For Athena, Spark or Redshift Spectrum, objects of roughly 128 MB or more read far more efficiently than many small files. If freshness forces a small buffer, compact the output later with a scheduled job rather than fighting the buffer hint.
Does data transformation change the buffer behaviour?
Yes. A Lambda transformation applies its own buffering before delivery, and the billed ingest is measured on the data Firehose receives, not on the smaller output your transformation produces. Dropping records in a transform does not reduce the ingest charge.
You might also need
- Lambda Cost CalculatorCommonly used together
- Kinesis Throughput CalculatorCommonly used together
- CloudWatch Log Cost CalculatorCommonly used together
- Serverless Health Score CalculatorAlso in AWS Serverless
- API Gateway Cost CalculatorAlso in AWS Serverless
- AWS API Gateway Throughput CalculatorAlso in AWS Serverless