AWSCost · blog
Where the money hides on your AWS bill
Short, specific breakdowns of the charges that grow while nobody is looking - with real prices and the fix for each.
AWS cost breakdown
Why EKS is expensive: the $73/month control plane
Every EKS cluster bills $0.10/hour - about $73/month - for the control plane before a single node runs, and $0.60/hour once it falls out of standard support. Idle and forgotten clusters are pure waste.
Read the breakdown→AWS cost breakdown
ECR storage costs $0.10/GB - and CI builds pile it up
ECR stores container images at $0.10/GB-month, and every CI build pushes layers that never expire on their own. Without a lifecycle policy the bill climbs forever - here is how to cap it.
Read the breakdown→AWS cost breakdown
Why Athena is expensive: $5 per TB scanned
Athena charges $5 per terabyte scanned, so an unpartitioned CSV table can cost 10 to 100 times more than the same data as partitioned Parquet. Here is where the scan cost comes from and how to cut it.
Read the breakdown→AWS cost breakdown
Why your AWS NAT gateway is so expensive - and how to cut it
NAT gateway charges compound: ~$0.045/GB processing plus ~$0.09/GB egress. Most of it is AWS-to-AWS traffic that never needed NAT. Gateway VPC endpoints drop it to $0.
Read the breakdown→AWS cost breakdown
Why your stopped EC2 instance is still being charged
A stopped EC2 instance keeps billing for its attached EBS disk and any Elastic IP. One 8 GB volume quietly cost me ~$70 over six years. Here is what still charges when an instance is off.
Read the breakdown→AWS cost breakdown
Orphaned EBS snapshots are quietly draining your AWS bill
EBS snapshots cost $0.05/GB-month and never delete themselves. Forgotten ones pile up into hundreds a month. Here is how to find the orphans and automate cleanup.
Read the breakdown→AWS cost breakdown
Why your CloudWatch logs bill is so high - and how to cut it
CloudWatch charges $0.50/GB just to ingest logs - I have seen it hit ~$700/month on a single cluster. The Infrequent Access class, retention limits, and metric filters cut most of it.
Read the breakdown→AWS cost breakdown
Why RDS looks expensive - and how to right-size the instance
A low-traffic MySQL database runs fine on db.t4g.small (~$23/month), not the $100+ tier an AI often quotes. Size RDS to your working set, not your row count.
Read the breakdown→AWS cost breakdown
Are reserved instances worth it? The real math
A steady t2.micro drops from ~$9.78/month on-demand to ~$4.42/month on a 3-year reservation - 55% off, same server. Here is when reserving pays off and when it does not.
Read the breakdown→AWS cost breakdown
Why your S3 bill keeps growing - and how to stop it
Cold backups sit in S3 Standard at ~$46/month per 2 TB when Glacier Deep Archive is ~$2/month for the same files. One lifecycle rule moves them automatically.
Read the breakdown→AWS cost breakdown
Why your AWS data transfer bill is so high - and how to cut it
Data transfer hides across three charges: $0.09/GB out to the internet, $0.045/GB through a NAT gateway, and $0.01/GB each way between AZs. Here is where it comes from and how to cut it.
Read the breakdown→AWS cost breakdown
Cross-AZ data transfer: the $0.01/GB charge draining HA setups
Traffic between Availability Zones costs $0.01/GB each way - $0.02 round trip. A chatty multi-AZ setup can quietly run $1,000+/month. Here is how to find it and cut it.
Read the breakdown→AWS cost breakdown
Idle load balancers cost ~$16/month each - even with zero traffic
An ALB or NLB with no traffic still bills about $16 to $22/month just to exist. Here is how to find load balancers with no healthy targets and shut them down.
Read the breakdown→AWS cost breakdown
Switch EBS gp2 to gp3 and cut 20% with no downtime
gp3 volumes cost $0.08/GB-month against gp2's $0.10 - 20% less at the same or better performance, with a live migration and no downtime. Here is the one command.
Read the breakdown→AWS cost breakdown
Why AWS is charging you for public IPv4 addresses
Since February 2024 every public IPv4 address costs $0.005/hour (~$3.60/month), attached or idle. Idle Elastic IPs are pure waste. Here is how to find and release them.
Read the breakdown→AWS cost breakdown
Spot instances: what is safe to run on them, and what is not
Spot instances are up to 90% cheaper than on-demand - I moved almost everything to spot. The catch is a 2-minute interruption notice. Here is what is safe to run on spot and what is not.
Read the breakdown→AWS cost breakdown
Savings Plans vs reserved instances: which one, and how much
A Compute Savings Plan cuts up to 66% and flexes across families, regions, Fargate and Lambda; an EC2 Instance Savings Plan cuts up to 72% but locks to a family. Here is how to choose.
Read the breakdown→AWS cost breakdown
Graviton (ARM) is ~20% cheaper than x86 for the same work
AWS Graviton instances cost about 20% less than comparable x86 at equal or better performance, and arm64 Lambda is a one-dropdown switch. Here is how to find migration candidates.
Read the breakdown→AWS cost breakdown
How to find idle and oversized EC2 instances draining your bill
An EC2 instance sized for a peak that never comes idles at under 10% CPU while billing full price. Here is how to spot the oversized ones and right-size them down.
Read the breakdown→AWS cost breakdown
Is Fargate expensive? Where the cost really goes
Fargate bills $0.04048/vCPU-hour and $0.004445/GB-hour - the leak is over-provisioned task size. Here is how to right-size tasks and cut cost with Fargate Spot and Graviton.
Read the breakdown→AWS cost breakdown
Your dev and staging RDS databases are billing 24/7
A dev database used 8 hours a day still bills for 24. Scheduling stop/start on non-production RDS saves 50 to 80%. Here is how to stop paying for databases nobody is using at night.
Read the breakdown→AWS cost breakdown
Multi-AZ is doubling your RDS bill - do you need it?
Multi-AZ runs a standby replica around the clock, so it roughly doubles the instance cost. Essential for production, wasteful for dev and staging. Here is how to tell, and how to fix it.
Read the breakdown→AWS cost breakdown
The RDS costs hiding in storage and backups
RDS storage and backups bill separately from the instance - over-provisioned gp2 disk and backups beyond 100% of your DB size add up quietly. Here is how to find and trim them.
Read the breakdown→AWS cost breakdown
Is Lambda expensive? What you actually pay for
Lambda costs requests times duration times memory - $0.20 per million requests and $0.0000166667 per GB-second. The leak is untuned memory. Here is how the pricing works and how to cut it.
Read the breakdown→AWS cost breakdown
DynamoDB on-demand vs provisioned: which is cheaper
On-demand DynamoDB got 50% cheaper in late 2024, but provisioned still wins on steady, high-utilization tables. Here is the break-even and how to pick the mode that fits your traffic.
Read the breakdown→AWS cost breakdown
Why your AWS bill suddenly jumped (the free tier ran out)
AWS free tier is time-limited: legacy accounts get 12 months, new ones get $200 in credits for 6 months. When it lapses, previously-free resources bill at full rate. Here is how to see it coming.
Read the breakdown→AWS cost breakdown
CloudWatch metrics and alarms cost more than you think
Custom metrics cost $0.30 each and alarms $0.10 each past the free 10 - hundreds created and forgotten add up fast. Here is how to find the ones nobody looks at and cut them.
Read the breakdown→AWS cost breakdown
You cannot cut an AWS bill you cannot read: cost allocation tags
Untagged resources make it impossible to see which team, service, or environment is spending. Cost allocation tags are free and the enabler for every other cut. Here is how to set them up.
Read the breakdown→AWS cost breakdown
The S3 cost you cannot see: incomplete multipart uploads
Failed uploads leave parts that bill every month but never show in the S3 console. A one-line lifecycle rule cleans them up. Here is how to find what is hiding and stop paying for it.
Read the breakdown→AWS cost breakdown
Orphaned AMIs and their snapshots are padding your bill
Every AMI keeps backing EBS snapshots billing at $0.05/GB-month, and old images pile up unnoticed. Here is how to find AMIs you no longer use and reclaim the snapshot cost.
Read the breakdown→