7 Quiet Ways Your AWS Bill Grows (and How I Fixed Each One
Most surprise AWS bills don’t come from one big mistake. They come from small things that nobody notices until the invoice arrives. Here are seven I’ve seen, with the fix for each.
1. Idle resources nobody turned off
Stopped EC2 instances still charge for their attached EBS volumes. Unattached volumes, old snapshots, and unused Elastic IPs also keep billing.
Fix: Review these monthly and delete what you don’t need. AWS Trusted Advisor and Cost Explorer can help you spot them.
Stopped EC2 instances still charge for their attached EBS volumes. Unattached volumes, old snapshots, and unused Elastic IPs also keep billing.
Fix: Review these monthly and delete what you don’t need. AWS Trusted Advisor and Cost Explorer can help you spot them.
2. NAT Gateway data charges
A NAT Gateway bills per hour and per GB processed. Traffic to S3 or DynamoDB through it adds up fast.
Fix: Use VPC Gateway Endpoints for S3 and DynamoDB, which don’t carry the NAT data charge.
A NAT Gateway bills per hour and per GB processed. Traffic to S3 or DynamoDB through it adds up fast.
Fix: Use VPC Gateway Endpoints for S3 and DynamoDB, which don’t carry the NAT data charge.
3. Oversized instances
Many workloads run at low CPU on instances sized for peak load.
Fix: Check AWS Compute Optimizer recommendations and right-size. Consider Graviton instances where your workload supports them.
Many workloads run at low CPU on instances sized for peak load.
Fix: Check AWS Compute Optimizer recommendations and right-size. Consider Graviton instances where your workload supports them.
4. S3 storage in the wrong class
Data that is rarely accessed often stays in S3 Standard forever.
Fix: Use lifecycle rules or S3 Intelligent-Tiering, and set expiry on logs and temporary data.
Data that is rarely accessed often stays in S3 Standard forever.
Fix: Use lifecycle rules or S3 Intelligent-Tiering, and set expiry on logs and temporary data.
5. Logs with no retention policy
CloudWatch Logs keep data indefinitely by default.
Fix: Set a retention period on every log group (for example 14 or 30 days) and export older logs to S3 if you need them.
CloudWatch Logs keep data indefinitely by default.
Fix: Set a retention period on every log group (for example 14 or 30 days) and export older logs to S3 if you need them.
6. No budget alerts
Without alerts, you find out after the money is spent.
Fix: Create an AWS Budget with email alerts at 50%, 80%, and 100% of your monthly limit. It takes about two minutes.
Without alerts, you find out after the money is spent.
Fix: Create an AWS Budget with email alerts at 50%, 80%, and 100% of your monthly limit. It takes about two minutes.
7. Untagged resources
If you can’t tell who owns a resource, nobody deletes it.
Fix: Enforce tags like
If you can’t tell who owns a resource, nobody deletes it.
Fix: Enforce tags like
project, owner, and env, then activate them as cost allocation tags to filter in Cost Explorer.Conclusion:
Cost control is a habit, not a one-time cleanup. Set a budget, tag everything, and do a 15-minute review each month. Which of these has bitten you? Tell me in the comments and I’ll cover the most common ones in a follow-up.
Cost control is a habit, not a one-time cleanup. Set a budget, tag everything, and do a 15-minute review each month. Which of these has bitten you? Tell me in the comments and I’ll cover the most common ones in a follow-up.
Suggested tags: AWS, cost optimization, FinOps, beginners, cloud
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article