AWS bills keep growing. The average organisation wastes 32% of its cloud spend on overprovisioned, idle or wrongly priced resources. Here are 10 tactics that consistently deliver 30%+ AWS cost reduction — with realistic saving estimates for each.
1. Buy Reserved Instances for Always-On Workloads (Save 35-40%)
The single highest-impact change. Any EC2 instance running more than 60% of the month should be on 1-year Reserved Instances or Savings Plans. The saving is 35-40% with zero performance impact.
How: AWS Cost Explorer → Savings Plans → Get Recommendations → implement top 10 by estimated saving.
Typical saving: $15,000/month on a $50K/month bill with 70% on-demand usage.
2. Use Spot Instances for CI/CD and Batch (Save 65-70%)
Build agents, data processing jobs, ML training and non-critical batch workloads are perfect for EC2 Spot. Interruption rates are under 5% for most instance families when you use 6-8 instance types across 3 availability zones.
Typical saving: $8,000/month for a team running 50+ concurrent build agents.
3. Rightsize Overprovisioned EC2 Instances (Save 10-20%)
AWS Compute Optimizer analyses your actual CPU and memory usage and recommends downsizing. Pull the report, filter by "Over-provisioned," sort by estimated saving, implement the top 20 recommendations.
Typical saving: $5,000-10,000/month on a $50K bill within 2 hours of work.
4. Add S3 Lifecycle Policies (Save 50-70% on Storage)
Objects sitting in S3 Standard that haven't been accessed in 30+ days are costing $0.023/GB when they should be on Infrequent Access ($0.0125/GB) or Glacier ($0.004/GB).
Action: S3 → Management → Lifecycle Rules → IA after 30 days → Glacier after 90 days → Deep Archive after 365 days.
5. Delete Orphaned Resources Weekly (Save 5-15%)
Unattached EBS volumes, unused Elastic IPs ($3.65/month each), stopped EC2 instances, old RDS snapshots and idle load balancers accumulate invisibly. Run a weekly cleanup or use AWS Config to flag them automatically.
6. Move Dev/Test Instances to Scheduled Stopping (Save 65% of Dev Compute)
Dev and test instances that run 24/7 but are only used 9am-6pm weekdays waste 65% of their cost. AWS Instance Scheduler stops them automatically outside working hours. Zero effort after setup.
7. Switch to Graviton3 Instances (Save 20% vs x86)
AWS Graviton3 (m7g, c7g, r7g) is 20% cheaper than equivalent x86 instances AND 40% faster per watt. For Java, Python, Go and Node.js workloads, migration is typically a 1-line change and a recompile.
8. Eliminate Unnecessary NAT Gateway Traffic (Save $500-5,000/month)
NAT Gateway charges $0.045/GB processed. S3 and DynamoDB traffic routed through NAT Gateway is easily avoided with VPC Gateway Endpoints — free to configure, immediate saving.
9. Enable Cost Anomaly Detection (Prevent Surprise Bills)
Free. Takes 30 minutes to configure. Catches misconfigured resources, runaway processes and accidental public data transfers before they become four-figure surprises on your monthly bill.
10. Negotiate an Enterprise Discount Programme (Save 10-20% Additional)
If your AWS spend exceeds $100K/month, you qualify for AWS EDP negotiation. Commit to 1-3 year spend commitments in exchange for 10-20% additional discount on top of reserved pricing. Engage your AWS account team or a partner to negotiate.
Quick-Start: Do These 5 This Week
- Enable Cost Anomaly Detection (30 minutes, free)
- Pull Compute Optimizer report and implement top 10 rightsize recommendations
- Add lifecycle rules to your top 3 S3 buckets by size
- Delete all unattached EBS volumes and unused Elastic IPs
- Schedule dev/test instances to stop at 7pm and weekends
Use the TCOIQ ROI Calculator to estimate your total saving potential before starting.