Summary:

  • Kinesis Data Streams delivers sub-second latency with granular shard control, while Amazon Data Firehose provides fully managed delivery with automatic batching to destinations like S3, Redshift, and Apache Iceberg tables.
  • The 2025-2026 enhancements including On-Demand Advantage mode, 10 MiB record sizes, and native Iceberg integration have fundamentally changed how architects should evaluate these services.
  • Cost modeling differs dramatically. Streams charges per shard-hour and data volume, while Firehose charges purely on ingested data volume with no infrastructure management overhead.
  • This guide provides a decision framework, comparison tables, and configuration examples to help you select the right service for real-time analytics, log aggregation, or event-driven architectures.

Choosing between AWS streaming services can feel like navigating a maze where every turn reveals another trade-off between latency, cost, and operational complexity. When your architecture demands real-time data processing, the decision between Kinesis Data Streams and Amazon Data Firehose becomes one of the most consequential choices you will make. Both services handle streaming data at scale, yet they serve fundamentally different purposes and impose distinct operational burdens on your team.

Understanding these differences is not merely academic. It directly impacts your system’s responsiveness, your monthly AWS bill, and the engineering hours required to maintain your data pipeline. This guide dissects both services through the lens of recent AWS enhancements, providing you with a decision framework grounded in 2025-2026 capabilities.

kinesis-firehose-architecture-overview
Architectural overview comparing Kinesis Data Streams and Amazon Data Firehose data flow patterns

Overview of Kinesis Data Streams and Amazon Data Firehose

Amazon Kinesis Data Streams is a massively scalable, durable real-time data streaming service designed for scenarios where you need fine-grained control over data consumption. It operates on a shard-based architecture where each shard provides 1 MB/s write capacity and 2 MB/s read capacity. You provision shards explicitly in provisioned mode or let AWS handle scaling automatically in on-demand mode.

Data persists in the stream for a configurable retention period ranging from 24 hours to 365 days. This enables replay capabilities that prove invaluable during incident recovery or reprocessing scenarios.

Amazon Data Firehose, formerly known as Kinesis Data Firehose, takes a fundamentally different approach by abstracting away all infrastructure management. You configure a delivery stream, specify your destination, and Firehose handles buffering, batching, compression, and delivery automatically. There are no shards to manage, no capacity planning exercises, and no consumer applications to build.

Firehose scales elastically based on incoming data volume, making it the preferred choice when your primary goal is loading streaming data into storage or analytics services without writing custom consumer code.

Real-world context: Many production architectures use both services together. Kinesis Data Streams captures events with sub-second latency for real-time processing, while a Firehose delivery stream attached to the same Kinesis stream handles long-term storage to S3 or Iceberg tables.

The naming evolution itself reflects AWS’s strategic positioning. The rebranding to “Amazon Data Firehose” in 2024 signaled its expansion beyond Kinesis-only sources to accept data directly from Amazon MSK, CloudWatch Logs, and even S3 event notifications. This architectural flexibility positions Firehose as a universal delivery mechanism rather than a Kinesis-specific feature. Understanding this distinction helps clarify when each service fits your requirements.

Architectural differences and source integration

The architectural philosophies underlying these services diverge at their core. Kinesis Data Streams implements a publish-subscribe model where multiple consumers can independently read from the same stream at their own pace. Each consumer maintains its own checkpoint, enabling different applications to process the same data for distinct purposes. This fan-out capability makes Streams ideal for event-driven architectures where a single event triggers multiple downstream workflows.

Source types and ingestion patterns

Kinesis Data Streams accepts data exclusively through the PutRecord and PutRecords APIs, requiring producers to explicitly push data into the stream. This design provides maximum flexibility but demands that you build or configure producer applications. Common producer patterns include:

  • Kinesis Producer Library (KPL): Aggregates multiple user records into single Kinesis records for efficiency
  • AWS SDK direct integration: Custom applications using PutRecords for batch ingestion
  • Kinesis Agent: File-based ingestion from EC2 instances or on-premises servers

Amazon Data Firehose supports a broader range of source types that eliminate producer development entirely in many scenarios. Beyond direct API puts, Firehose can ingest from Kinesis Data Streams as a source, Amazon MSK topics, CloudWatch Logs subscriptions, and AWS IoT rules. This source diversity means you can route data from managed services directly to storage without intermediate processing layers.

Pro tip: When using Kinesis Data Streams as a Firehose source, you gain the best of both worlds. Real-time consumer access through Streams plus automated delivery to storage through Firehose, all from a single ingestion point.

Consumer architecture and processing models

Kinesis Data Streams requires you to build or deploy consumer applications that poll for records, process them, and checkpoint progress. The Kinesis Client Library (KCL) simplifies this by handling shard assignment, load balancing, and checkpointing automatically. However, you remain responsible for deploying, scaling, and monitoring these consumer applications. This operational overhead is the price of flexibility.

Firehose eliminates consumer development entirely by acting as both the consumer and the delivery mechanism. You configure transformation logic through Lambda functions if needed, but Firehose handles all record retrieval, batching, and destination writes internally. This serverless model reduces operational burden dramatically but removes your ability to implement complex processing logic or maintain state across records.

Real-time streaming performance

Latency characteristics represent one of the most significant differentiators between these services. Kinesis Data Streams delivers end-to-end latency measured in hundreds of milliseconds under normal conditions. Records become available to consumers within 200-500ms of ingestion, making Streams suitable for real-time dashboards, fraud detection, and interactive applications where users expect immediate feedback.

Enhanced Fan-Out for dedicated throughput

Standard Kinesis consumers share the 2 MB/s per-shard read capacity, which can create contention when multiple applications consume from the same stream. Enhanced Fan-Out addresses this limitation by providing each registered consumer with dedicated 2 MB/s throughput per shard. Records are pushed to consumers over HTTP/2, reducing latency to approximately 70ms and eliminating polling overhead.

Consider the following comparison of consumer modes:

CharacteristicStandard consumerEnhanced Fan-Out consumer
Throughput per shard2 MB/s shared across all consumers2 MB/s dedicated per consumer
Delivery modelPull via GetRecords APIPush over HTTP/2
Typical latency200-500ms~70ms
Maximum consumers5 per shard (soft limit)20 registered consumers per stream, upto 50 on On-Demand Advantage streams
Additional costNonePer consumer-shard hour plus data retrieval

Firehose buffering and delivery intervals

Amazon Data Firehose introduces intentional latency through its buffering mechanism. You configure buffer size (1-128 MB) and buffer interval (0-900 seconds), and Firehose delivers data when either threshold is reached. The minimum practical latency is approximately 60 seconds when using the smallest buffer settings. Most production configurations use larger buffers to optimize cost and reduce small-file proliferation in S3.

Watch out: A zero-second buffer interval behaves differently by destination. For application and HTTP-endpoint destinations, it delivers data within a few seconds. For Amazon S3, buffer intervals under 60 seconds trigger multipart upload to hit lower latency, which increases S3 PUT request costs. Dynamic partitioning and the S3 backup path don’t support zero buffering at all and remain subject to the 60-second-plus floor.

This buffering behavior makes Firehose unsuitable for true real-time use cases but ideal for near-real-time analytics where minute-level freshness suffices. Log aggregation, clickstream analysis, and data lake ingestion typically tolerate this latency in exchange for simplified operations.

Scaling and recent enhancements for 2025-2026

AWS has introduced substantial enhancements to both services that change the calculus for many architectural decisions. Understanding these recent capabilities ensures your design leverages the latest optimizations rather than working around limitations that no longer exist.

On-Demand Advantage mode for Kinesis Data Streams

The On-Demand Advantage mode, announced in November 2025, represents a significant evolution in Streams capacity management. It adds a ‘warm throughput’ capability to on-demand streams, you can configure instantly available capacity up to 10 GiB/s ahead of an expected traffic event, rather than relying on standard on-demand mode’s reactive scale-up. It’s best suited to accounts ingesting at least 10 MiB/s in aggregate, or those running hundreds of streams in a region.

Key characteristics of On-Demand Advantage include:

  1. Warm throughput lets you pre-configure instantly available capacity up to 10 GiB/s ahead of anticipated spikes, instead of waiting on reactive scaling
  2. At least 60% lower usage pricing than On-Demand Standard ($0.032/GB ingested, $0.016/GB retrieved in US East, vs. standard on-demand rates)
  3. No per-stream hourly charge, billing shifts entirely to data volume, with a 25 MiB/s account-level minimum for ingest and retrieval
  4. Enhanced Fan-Out included at no additional charge, with support for up to 50 registered consumers per stream (up from 20 on standard on-demand streams)
  5. Extended retention pricing cut by 77%, from $0.10/GB-month to $0.023/GB-month

This mode particularly benefits workloads with predictable baseline traffic but occasional spikes, such as e-commerce platforms during flash sales or media streaming services during live events. The guaranteed baseline eliminates the risk of throttling during critical moments while the automatic scaling handles unexpected demand.

Record size increases and Iceberg integration

Kinesis Data Streams has expanded its record size limit significantly, as of October 2025, streams support records up to 10 MiB, a tenfold increase from the previous 1 MiB default. Amazon Data Firehose’s record limit, by contrast, remains 1,000 KiB for standard sources like Direct PUT or Kinesis Data Streams, it only rises to 10 MB when the source is Amazon MSK. The Kinesis increase enables new use cases involving large JSON documents, embedded media metadata, or aggregated event batches that previously required splitting across multiple records, without needing a separate large-object workaround.

Historical note: Kinesis Data Streams’ original 1 MiB record limit had been unchanged since the service’s early years. The October 2025 increase to 10 MiB was designed for intermittent large payloads, AWS recommends keeping large records under 2% of overall stream traffic, since per-shard throughput (1 MB/s write, 2 MB/s read) is unchanged. Firehose’s 1,000 KiB limit remains AWS’s current standard for non-MSK sources.

Perhaps the most architecturally significant enhancement is Firehose’s native support for Apache Iceberg table format and S3 Tables. Rather than delivering raw Parquet or JSON files that require separate cataloging, Firehose can now write directly to Iceberg tables with automatic schema evolution, partition management, and ACID transaction guarantees. This integration eliminates the need for separate ETL jobs to maintain table metadata and enables immediate queryability through Athena, Spark, or Trino.

Configuration example for Iceberg delivery

The following AWS CLI command demonstrates creating a Firehose delivery stream with Iceberg table destination:

This configuration routes data directly to an Iceberg table managed through the AWS Glue Data Catalog, with Firehose handling all compaction, manifest updates, and partition management automatically. The transformation capabilities extend further with dynamic partitioning support.

Transformation, retention, and delivery destinations

Data transformation requirements often determine which service fits your architecture. Kinesis Data Streams itself performs no transformation. It stores records exactly as received and delivers them unchanged to consumers. All transformation logic lives in your consumer applications, giving you complete flexibility but requiring development effort.

Firehose transformation with Lambda and dynamic partitioning

Amazon Data Firehose offers built-in transformation through Lambda function invocation. Each record passes through your Lambda function before delivery, enabling format conversion, enrichment, filtering, or any custom logic expressible in Lambda’s supported runtimes. The transformation Lambda receives batches of records and must return the same number of records with a processing status for each.

Dynamic partitioning extends transformation capabilities by allowing Firehose to route records to different S3 prefixes based on record content. You define partitioning keys using JQ expressions or Lambda-extracted metadata, and Firehose automatically organizes output files accordingly. This feature proves invaluable for multi-tenant architectures or time-series data requiring partition pruning during queries.

Pro tip: When using dynamic partitioning with high-cardinality keys, enable active partitions buffering to prevent excessive small files. Firehose can maintain up to 500 active partitions simultaneously before forcing buffer flushes.

Data retention and replay capabilities

Kinesis Data Streams provides configurable retention from 24 hours to 365 days. Extended retention enables replay scenarios where you reprocess historical data through updated consumer logic or recover from downstream failures. This capability proves essential for debugging, compliance auditing, and machine learning model retraining on historical event sequences.

Firehose provides no retention capability. Once records are delivered to the destination, they exist only in that destination. Failed deliveries retry automatically, and undeliverable records route to an S3 backup bucket. However, there is no mechanism to replay successfully delivered data through Firehose itself. Your replay strategy must rely on the destination storage.

Destination comparison

The supported destinations differ substantially between services:

Destination typeKinesis Data StreamsAmazon Data Firehose
Amazon S3Via custom consumerNative support with partitioning
Amazon RedshiftVia custom consumerNative COPY command integration
Amazon OpenSearchVia custom consumerNative indexing support
Apache Iceberg tablesVia custom consumerNative support (2025)
S3 TablesVia custom consumerNative support (2025)
SplunkVia custom consumerNative HEC integration
HTTP endpointsVia custom consumerNative webhook delivery
Custom applicationsNative via KCL/SDKNot supported
Lambda functionsNative event source mappingTransformation only, not destination
firehose-dynamic-partitioning-flow
Amazon Data Firehose dynamic partitioning workflow with Lambda transformation

Cost comparison with practical examples

Pricing models for these services follow fundamentally different structures, making direct comparison challenging without specific workload parameters. Kinesis Data Streams charges based on shard-hours in provisioned mode or data volume in on-demand mode, plus additional charges for extended retention and Enhanced Fan-Out consumers. Firehose charges purely on ingested data volume with no infrastructure fees.

Kinesis Data Streams pricing breakdown

For provisioned mode, you pay approximately $0.015 per shard-hour in US regions, translating to roughly $11 per shard per month. Each shard provides 1 MB/s ingestion and 2 MB/s retrieval. Extended retention beyond 24 hours adds $0.020 per shard-hour for retention up to 7 days, with long-term retention pricing for periods beyond that. Enhanced Fan-Out adds $0.013 per consumer-shard-hour plus $0.013 per GB retrieved.

On-demand mode simplifies pricing to approximately $0.08 per GB ingested and $0.04 per GB retrieved, eliminating shard management but potentially increasing costs for high-throughput workloads. The On-Demand Advantage mode introduces baseline capacity pricing that varies by region and committed throughput level.

Amazon Data Firehose pricing breakdown

Firehose pricing centers on ingested data volume at approximately $0.029 per GB for the first 500 TB per month in US regions. Format conversion to Parquet or ORC adds $0.018 per GB. Dynamic partitioning adds $0.020 per GB of processed data. There are no charges for delivery to S3, but deliveries to Redshift, OpenSearch, or HTTP endpoints incur additional per-GB fees.

Watch out: Firehose pricing applies to ingested data before compression. If you send 100 GB of JSON that compresses to 10 GB in S3, you pay for 100 GB of Firehose ingestion plus any transformation fees, not the compressed size.

Cost scenario comparison

Consider a workload ingesting 10 TB per month with requirements for both real-time processing and long-term storage:

Cost componentStreams + custom S3 consumerStreams + Firehose to S3Firehose only
Ingestion (10 TB)$800 (on-demand)$800 + $290$290
Consumer compute~$200 (Lambda/EC2)$0 (Firehose managed)N/A
Real-time capabilityYesYesNo (60s+ latency)
Operational overheadHighMediumLow
Estimated monthly total~$1,000~$1,090~$290

This comparison illustrates why architecture requirements, not just cost, should drive your decision. The Firehose-only option costs 70% less but cannot support real-time use cases. The combined approach provides both capabilities at moderate additional cost.

Use-case decision framework

After clarifying the technical differences, applying them to specific scenarios helps crystallize the right choice for your architecture. The decision often reduces to answering three questions. What latency can your application tolerate? Do you need multiple consumers processing the same data? How much operational complexity can your team absorb?

When to choose Kinesis Data Streams

Kinesis Data Streams excels in scenarios requiring sub-second latency, multiple independent consumers, or complex stateful processing. Specific use cases include:

  • Real-time fraud detection: Transaction scoring must complete before authorization timeout
  • Live dashboards and monitoring: Metrics must reflect current state within seconds
  • Event sourcing architectures: Multiple services rebuild state from the same event stream
  • Gaming leaderboards: Score updates must propagate to all players immediately
  • IoT command and control: Device responses require millisecond-level feedback loops

When to choose Amazon Data Firehose

Firehose fits scenarios where delivery to storage or analytics services matters more than processing latency. Ideal use cases include:

  • Log aggregation: Application logs flowing to S3 or OpenSearch for later analysis
  • Clickstream analytics: User behavior data populating data lakes for batch processing
  • Data lake ingestion: Streaming data into Iceberg tables for SQL analytics
  • Compliance archival: Audit events requiring durable storage without real-time processing
  • Third-party integrations: Delivering data to Splunk, Datadog, or custom HTTP endpoints

Real-world context: Senior architects often implement both services in production. A common pattern uses Streams for real-time processing with a Firehose delivery stream attached for durable storage, providing immediate analytics capability while building a queryable historical archive.

Decision framework for selecting between Kinesis Data Streams and Amazon Data Firehose

Conclusion

The choice between Kinesis Data Streams and Amazon Data Firehose ultimately reflects your priorities across three dimensions. These are latency requirements, operational complexity tolerance, and consumer architecture needs. Streams delivers the sub-second responsiveness and multi-consumer flexibility that real-time applications demand. Firehose provides the operational simplicity and native destination integrations that accelerate data lake and analytics implementations.

The 2025-2026 enhancements, particularly On-Demand Advantage mode and native Iceberg support, have narrowed the gap in some areas while reinforcing the distinct value propositions of each service.

Looking ahead, AWS continues investing in both services with features that reduce operational burden without sacrificing capability. The trend toward managed table formats like Iceberg suggests that Firehose will increasingly serve as the default path for analytics-focused streaming. Streams remains the foundation for event-driven architectures requiring immediate processing.

For most production systems handling significant data volumes, the combination of both services provides the optimal balance of real-time capability and durable storage. Your architecture should leverage each service for its strengths rather than forcing one to serve purposes better suited to the other.