The average AWS customer overpays by 30%. Not because they're being careless — but because the default settings, service sprawl, and rapid growth make it easy to accumulate waste silently. Here are five strategies we apply on every cost engagement.
1. Right-size before you reserve
The most common mistake is buying Reserved Instances or Savings Plans before understanding actual utilization. Run your workloads on On-Demand for 2–4 weeks, collect CloudWatch metrics, and right-size instances first. A t3.large running at 8% CPU should be a t3.small — saving 60% — before you commit to a 1-year reservation.
2. Kill zombie resources
Unattached EBS volumes, idle Elastic IPs, forgotten load balancers, and stopped EC2 instances with attached storage all cost money around the clock. Use AWS Cost Explorer's resource-level view and set up a weekly Lambda function to report on resources with zero traffic over 7 days.
3. Move cold data to the right S3 tier
S3 Standard costs $0.023/GB/month. S3 Glacier Instant Retrieval costs $0.004/GB/month — an 83% reduction for data accessed once a quarter. Enable S3 Intelligent-Tiering on buckets older than 30 days and let AWS handle the transitions automatically.
4. Use Spot Instances for fault-tolerant workloads
Spot Instances offer up to 90% discount over On-Demand pricing. They're ideal for batch jobs, ML training, CI/CD build runners, and stateless microservices with proper interruption handling. Combine Spot with Auto Scaling Groups using mixed instance policies to maintain capacity even during Spot interruptions.
5. Set up Cost Anomaly Detection
Cost Anomaly Detection uses ML to catch unusual spending patterns within hours. Set up monitors for your top 5 services and configure SNS alerts to fire when spend deviates more than 15% from baseline. This alone has caught runaway DynamoDB scan bills and forgotten test environments costing hundreds per day.