AWS MSK (Managed Streaming for Apache Kafka) runs fully managed Kafka clusters in your AWS account. With pricing based on broker instances, storage, and data transfer, MSK costs depend heavily on cluster sizing and throughput requirements. MSK Serverless offers a pay-per-use alternative for variable workloads.
TL;DR: MSK Provisioned pricing starts at $0.21/hr per kafka.m5.large broker (minimum 3 brokers = $0.63/hr or ~$460/month). Storage costs $0.10/GB-month. MSK Serverless charges $0.75/hr per cluster, $0.0015/hr per partition, and $0.10/GB for data in/out. Choose Serverless for variable workloads under 200 MB/s.
MSK Provisioned Pricing
| Component | Price |
|---|---|
| kafka.m5.large | $0.21/hr per broker |
| kafka.m5.xlarge | $0.42/hr per broker |
| kafka.m5.2xlarge | $0.84/hr per broker |
| kafka.m5.4xlarge | $1.68/hr per broker |
| kafka.m7g.large (Graviton) | $0.1869/hr per broker |
| kafka.m7g.xlarge (Graviton) | $0.3738/hr per broker |
Storage Pricing
| Storage Type | Price |
|---|---|
| Provisioned storage | $0.10/GB-month |
| Tiered storage | $0.023/GB-month |
| Minimum brokers per cluster | 3 (one per AZ) |
MSK requires a minimum of 3 brokers spread across Availability Zones. Provisioned storage is allocated per broker, while tiered storage automatically moves older data to cost-effective storage at $0.023/GB-month (same as S3 Standard).
Data Transfer
| Transfer Type | Price |
|---|---|
| Cross-AZ (between brokers) | $0.01/GB each direction |
| Same AZ | Free |
| Internet egress | Standard AWS rates |
Kafka replication generates cross-AZ traffic. With a replication factor of 3 across 3 AZs, each GB ingested generates roughly 2 GB of cross-AZ transfer at $0.01/GB each way.
MSK Serverless Pricing
| Component | Price |
|---|---|
| Cluster hours | $0.75/hr |
| Partition hours | $0.0015/hr per partition |
| Data in | $0.10/GB |
| Data out | $0.10/GB |
| Data retained | $0.10/GB-month |
MSK Serverless removes the need to provision and manage brokers. You create a cluster and MSK automatically allocates capacity based on demand. Billing is based on cluster hours, partition count, and data throughput.
MSK Serverless Cost Example
A cluster with 50 partitions processing 100 GB/day of data in and 200 GB/day out:
- Cluster: 730 hours x $0.75 = $547.50
- Partitions: 50 x 730 hours x $0.0015 = $54.75
- Data in: 3,000 GB x $0.10 = $300.00
- Data out: 6,000 GB x $0.10 = $600.00
- Total: ~$1,502/month
MSK Provisioned vs Serverless
| Factor | MSK Provisioned | MSK Serverless |
|---|---|---|
| Minimum monthly cost | ~$460 (3x kafka.m5.large) | ~$547 (cluster hours only) |
| Throughput | Scales with broker count | Up to 200 MB/s |
| Partitions | Thousands per broker | Billed per partition |
| Best for | High, steady throughput | Variable, bursty workloads |
| Storage | $0.10/GB-month (or tiered) | $0.10/GB-month |
| Management | You size brokers | Fully automatic |
For sustained throughput above 200 MB/s or workloads with thousands of partitions, MSK Provisioned is more cost-effective. For smaller or variable workloads, Serverless eliminates over-provisioning waste.
MSK vs Kinesis Cost Comparison
| Factor | MSK Provisioned | MSK Serverless | Kinesis Data Streams |
|---|---|---|---|
| Base cost (low volume) | ~$460/month | ~$550/month | $10.95/month (1 shard) |
| 1 TB/day throughput | ~$600/month | ~$3,600/month | ~$1,100/month |
| 10 TB/day throughput | ~$2,000/month | ~$30,000/month | ~$8,700/month |
| Retention | Configurable (tiered) | 24 hrs default | 24 hrs - 365 days |
| Ecosystem | Full Kafka compatibility | Full Kafka compatibility | AWS SDK only |
For teams committed to the Kafka ecosystem, MSK provides native compatibility. For AWS-native workloads with moderate throughput, Kinesis can be simpler and cheaper at lower volumes.
Real-World Cost Examples
| Use Case | Configuration | Monthly Cost |
|---|---|---|
| Dev/test cluster | 3x kafka.m5.large, 100 GB storage | $560 |
| Production (moderate) | 6x kafka.m5.xlarge, 1 TB storage | $1,930 |
| High-throughput | 9x kafka.m5.2xlarge, 5 TB storage | $6,028 |
| Variable workload (Serverless) | 100 partitions, 50 GB/day in/out | $900 |
Cost Optimization Tips
1. Use Graviton Brokers
Graviton-based brokers (kafka.m7g) offer approximately 11% lower cost than Intel equivalents with comparable performance. Switch to Graviton for immediate savings.
2. Enable Tiered Storage
Tiered storage moves older log segments to low-cost storage at $0.023/GB-month instead of $0.10/GB-month. This is ideal for workloads requiring long retention periods.
3. Right-Size Broker Instances
Monitor broker CPU, memory, and network utilization via CloudWatch. Over-provisioned brokers waste money. Start smaller and scale up when utilization consistently exceeds 60%.
4. Minimize Cross-AZ Traffic
Configure consumers to read from the closest replica using rack-aware consumers (KIP-392). This eliminates cross-AZ data transfer costs for consumer traffic.
5. Evaluate MSK Express Brokers
MSK Express brokers offer up to 3x higher throughput per broker with simplified storage management, potentially reducing the number of brokers needed.
Related Guides
FAQ
What is the minimum cost for an MSK cluster?
The minimum MSK Provisioned cluster requires 3 brokers. Using kafka.m5.large at $0.21/hr each, the minimum is $0.63/hr or approximately $460/month plus storage costs.
Should I use MSK or Kinesis?
Choose MSK if you need Kafka compatibility, have existing Kafka consumers and producers, or require features like log compaction and exactly-once semantics. Choose Kinesis for simpler AWS-native integration at lower throughput levels.
Does MSK have a free tier?
No. MSK does not offer a free tier. The smallest Provisioned cluster costs around $460/month, and MSK Serverless starts at $547/month for cluster hours alone.
Lower Your MSK Costs with Wring
Wring helps you access AWS credits and volume discounts to lower your MSK costs. Through group buying power, Wring negotiates better rates so you pay less per broker hour.
