Cut Your AWS Bill by 40% With These 5 Changes
Real patterns from optimizing a $45K/month AWS environment down to under $28K — without touching core architecture.
Here's what actually moved the needle on AWS cost in production:
1. Right-size RDS before anything else
Most teams over-provision RDS on day one and never revisit. Run Enhanced Monitoring + CloudWatch for 30 days. A db.r5.2xlarge running at 18% CPU is almost always a db.r5.large in disguise.
2. Kill always-on dev/staging ECS tasks
Dev environments don't need to run 24/7. A simple Lambda-triggered scheduler that stops ECS tasks outside business hours saved ~$3,200/month on a 4-engineer team.
# Stop all ECS tasks in a cluster by tag
aws ecs list-tasks --cluster dev-cluster \
| jq -r '.taskArns[]' \
| xargs -I {} aws ecs stop-task --cluster dev-cluster --task {}
3. Colocate services in the same AZ
Cross-AZ data transfer is $0.01/GB each way. That's invisible at low scale, but at 10TB/month it's $200 you pay for nothing. Pin ECS tasks and their RDS to the same AZ for non-HA workloads.
4. S3 Intelligent-Tiering for assets older than 30 days
Set a lifecycle rule. Objects not accessed in 30 days automatically move to cheaper storage tiers. Zero code change, no access pattern changes needed.
5. Audit zombie EC2 instances with Cost Explorer
Filter by stopped instances. Stopped EC2 still bills for attached EBS volumes. Delete the EBS or terminate the instance if it's legacy.
These five changes alone dropped one production environment from $45K → $27K/month in a single sprint cycle.