Short answer: A typical AWS bill in 2026 breaks down as ~50% compute (EC2, EKS, Fargate, Lambda), ~20% storage (S3, EBS, RDS), ~15% networking (NAT Gateway, data egress, Load Balancers), ~10% managed services (RDS Multi-AZ, ElastiCache), and ~5% observability and security. The single most underestimated line is networking — NAT Gateway alone runs $32.85/mo per gateway before any traffic, and outbound data transfer at $0.09/GB adds up faster than teams expect.
This post breaks down where the money actually goes service by service in 2026, with current prices and links to free calculators for each one.
Compute: Where 50% of Your Bill Lives
Compute dominates most AWS bills because it scales with traffic and is hardest to right-size.
EC2
On-demand rates start at $0.0042/hr for t4g.nano and scale to $20+/hr for massive instances. Compute Savings Plans give 30-60% off for 1-year commitments, 50-72% for 3-year. Spot instances are 60-90% off but reclaimable with 2 minutes notice — perfect for stateless workloads, batch jobs, and dev environments.
EKS
The Elastic Kubernetes Service control plane is $0.10/hour per cluster — about $73/month. Fixed regardless of cluster size. On top, you pay for worker nodes (EC2 or Fargate). A minimal 3-node m5.large production cluster runs ~$280/month before networking and storage.
ECS
ECS is free — no control plane fee, unlike EKS. You pay only for the compute that runs your tasks: Fargate at $0.04048/vCPU-hr + $0.004445/GB-hr, or normal EC2 pricing for the EC2 launch type. For small clusters that don’t need Kubernetes-specific features, ECS is materially cheaper than EKS.
Lambda
Lambda charges $0.20 per million requests + $0.0000166667 per GB-second of execution. Free tier covers 1 million requests + 400,000 GB-seconds per month, always. ARM (Graviton) functions are 20% cheaper than x86. For low-volume or spiky workloads, Lambda is almost always cheaper than any container option.
Storage: 20% of the Bill, Often Overlooked
S3
Standard is $0.023/GB-month. Glacier Deep Archive is $0.00099/GB-month — 23x cheaper for cold data. Don’t forget request costs: $0.005 per 1,000 PUT/POST/LIST and $0.0004 per 1,000 GET. For a busy static-asset site serving 1 billion GET requests, that’s $400/month in requests alone.
EBS
The modern default is gp3 at $0.08/GB-month with 3,000 IOPS + 125 MB/s baseline included. io2 is for serious IOPS workloads. Snapshots are billed at $0.05/GB-month and dedupe across snapshots from the same volume — but they accumulate quietly if you don’t lifecycle them.
RDS
RDS pricing decomposes into instance + storage + I/O + backup. A db.t4g.medium starts at $0.065/hr (~$47/mo) plus storage. Multi-AZ doubles the instance cost — and you should use it for production. Aurora has a different model: per-second instances + storage that scales with actual data + I/O per million requests.
Networking: 15% That Catches Everyone by Surprise
This is where most AWS bill stories go wrong. Three sub-categories:
NAT Gateway
$0.045/hour + $0.045/GB processed. One gateway runs $32.85/month before any traffic. Three AZs for HA = ~$100/month at zero traffic, plus per-GB charges. Container workloads pulling images from ECR through NAT can hit hundreds of GB/month.
The fix most teams miss: add VPC Gateway Endpoints for S3 and DynamoDB (free) and Interface Endpoints for ECR ($0.01/hr/endpoint). These skip NAT entirely for that traffic. Typical savings: 30-60% of the NAT bill.
Calculate your NAT Gateway cost →
Data Transfer
Outbound internet from us-east-1 is $0.09/GB for the first 10 TB, scaling down to $0.05/GB beyond 150 TB. Cross-AZ traffic is $0.01/GB each way — service mesh sidecars and chatty microservices add up fast. CloudFront egress is $0.085/GB but origin → CloudFront is free, so routing user traffic through CloudFront often saves 10-30%.
Calculate your data transfer cost →
Application Load Balancer
$0.0225/hour + $0.008/LCU-hour. A typical low-traffic ALB runs $20-50/month; high-traffic ALBs can hit $100-300/month. Three things drive LCU: new connections, active connections, processed bytes — whichever is dominant is the bill driver.
Managed Services: The Quiet 10%
This is where bills creep up over time. Each line item looks small; in aggregate they add 10-15% on top of everything else:
- RDS Multi-AZ doubles your DB cost
- ElastiCache clusters are typically $50-500/mo per Redis/Memcached node
- OpenSearch is expensive: a small dev cluster is $50/mo, prod is easily $500-2000/mo
- AWS WAF is $5/month per Web ACL + $1 per rule + $0.60 per million requests
- GuardDuty charges by VPC flow logs + S3 events analyzed — at scale, $100-1000/mo
- AWS Secrets Manager is $0.40 per secret per month + $0.05 per 10K API calls
The Highest-ROI Optimizations
Ranked by typical savings per hour of engineering effort:
- Compute Savings Plans on the steady portion of compute — 30-60% off for 1-year, 50-72% for 3-year. Apply to EC2, Fargate, Lambda.
- VPC Endpoints for S3 + ECR — free for S3/DynamoDB, $0.01/hr/endpoint for ECR. Often saves $50-500/month for container-heavy workloads.
- Right-size pods and instances based on P95 actual usage. Most teams over-provision by 30-60%. Use the Container Size Calculator as a starting point.
- Spot instances for stateless workloads, dev, and batch — 60-90% off.
- S3 lifecycle rules to move older objects to Standard-IA → Glacier. Often saves 50-80% of storage cost on append-only data.
- Delete idle resources: unattached EBS volumes, stopped instances with attached storage, orphaned snapshots, abandoned NAT Gateways. Cost Explorer’s “Unused Resources” view finds them.
What’s NOT On Your AWS Bill (But Should Be On Your Mind)
Three costs that don’t appear on the AWS invoice but absolutely affect your budget:
- Observability tooling cost — Datadog, New Relic, Splunk. Often 10-30% of the AWS bill itself for monitoring-heavy stacks. See the Log Volume Cost Calculator and Cardinality Estimator.
- Engineering time — running your own RDS vs managed, building your own log pipeline vs SaaS. Sometimes the AWS bill goes down but the human bill goes up.
- Downtime cost — if Multi-AZ adds $200/mo but prevents one $50K outage, it’s worth it. See the Downtime Cost Calculator.
For the full architectural picture, see the AWS Pricing Guide. For Kubernetes-specific cost attribution by namespace and pod, check out Recon.
Related tools: