aws_kinesis_firehose_delivery_stream cost estimation
A managed stream that loads data into S3, Redshift, OpenSearch, or Splunk. Priced per GB ingested, with extras for format conversion and VPC delivery.
An aws_kinesis_firehose_delivery_stream (Amazon Data Firehose) is the no-ops way to land streaming data into a destination like S3 or OpenSearch. There are no shards or capacity to provision, so the cost is purely usage-based: you pay per GB of data ingested, with the rate stepping down in volume tiers.
The base charge is per GB ingested, around $0.029/GB for the first 500 TB/month, dropping at higher tiers. Data is rounded up to the nearest 5 KB per record, so many tiny records cost more than the raw byte count suggests. Optional features add to the bill: record format conversion (to Parquet/ORC) is charged per GB converted, and delivery into a VPC adds an hourly ENI charge plus per-GB processing.
Because Firehose is entirely usage-driven, c3x prices it from the monthly ingestion volume you supply in c3x-usage.yml. Without usage input the standing cost is zero, which is correct: an idle delivery stream costs nothing. The destination (S3 storage, OpenSearch domain, Redshift cluster) bills as its own resource.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "aws_kinesis_firehose_delivery_stream" "logs" {
name = "app-logs-to-s3"
destination = "extended_s3"
extended_s3_configuration {
role_arn = aws_iam_role.firehose.arn
bucket_arn = aws_s3_bucket.logs.arn
buffering_size = 64
buffering_interval = 300
compression_format = "GZIP"
}
}Pricing dimensions
What you actually pay for when you provision aws_kinesis_firehose_delivery_stream.
| Dimension | Unit | What's being charged |
|---|---|---|
| Data ingested | per GB | Volume ingested, rounded up per record to 5 KB. Tiered: ~$0.029/GB for the first 500 TB/month, lower above. Usage-based. $0.029/GB (first 500 TB/month) |
| Format conversion | per GB | Converting records to Parquet or ORC. Charged per GB converted on top of ingestion. Usage-based. $0.018/GB converted |
| VPC delivery | per hour + per GB | Delivering into a VPC adds an hourly ENI charge per AZ plus per-GB processing. Only when vpc_config is set. |
Sample C3X output
Example output from c3x estimate with 2 TB/month ingestion supplied:
aws_kinesis_firehose_delivery_stream.logs
└─ Data ingested 2,048 GB $59.39
OVERALL TOTAL $59.39
(S3 destination billed separately)Optimization tips
Common ways to reduce aws_kinesis_firehose_delivery_stream cost without changing the workload.
Batch small records before ingestion
Large for tiny-record streamsFirehose rounds each record up to 5 KB for billing. Aggregating many sub-KB events into larger records before the stream can cut the effective per-GB cost dramatically for high-volume, tiny-event workloads.
Compress at the destination, convert only when queried
Format-conversion chargeGZIP compression at delivery is free and shrinks S3 storage. Parquet/ORC conversion costs per GB; only enable it if you actually query the data with Athena/Redshift Spectrum often enough to justify it.
Avoid VPC delivery unless required
ENI hours + VPC processingVPC delivery adds an hourly ENI charge per AZ plus per-GB processing. If the destination is reachable without it, public delivery is cheaper.
FAQ
How does c3x estimate Data Firehose cost?
Firehose is usage-based, so c3x prices it from the monthly ingestion volume you provide in c3x-usage.yml, applying the tiered per-GB rate. With no usage supplied the standing cost is zero, which is correct for an idle stream.
Why does an idle delivery stream cost nothing?
Firehose has no provisioned capacity, shards, or always-on instances. You pay only for data ingested, so a stream with no traffic has no charge.
Why might my bill be higher than the raw data volume suggests?
Firehose rounds each record up to 5 KB for billing. A stream of many sub-KB events is billed as if each were 5 KB, so the effective GB count can far exceed the actual bytes. Batching records mitigates this.
Is the destination storage included?
No. The S3 bucket, OpenSearch domain, or Redshift cluster you deliver to bills as its own resource. c3x estimates those separately if they're in your Terraform.
How is this different from a Kinesis Data Stream?
A Kinesis Data Stream (aws_kinesis_stream) provisions shards and bills per shard-hour plus PUT payload, giving you a replayable buffer. Firehose is fully managed delivery with no shards, billed per GB ingested. Firehose is simpler; Data Streams give more control.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including aws_kinesis_firehose_delivery_stream.