Where AWS Waste Hides: The Top 6 Culprits
EC2 Over-Provisioning
25–40% waste
Instances sized for peak traffic running at 10–20% average CPU. Every idle vCPU costs money. Right-sizing to actual P95 utilization cuts EC2 bills by 30–50%.
On-Demand vs. Committed Pricing
30–72% overpay
On-Demand is the most expensive pricing tier. Committed use (Savings Plans, Reserved Instances) cuts costs 30–72% for the same compute. Most orgs buy too little commitment.
S3 Storage Accumulation
20–60% waste
Logs, CI artifacts, old backups, and dev data accumulating in S3 Standard at $0.023/GB/month. Lifecycle policies move old data to Glacier ($0.004/GB) — 83% cheaper.
Idle Resources
15–25% waste
Dev/staging environments, forgotten load balancers, unattached EBS volumes, and test databases running 24/7. Stopping nights/weekends saves 60–75% on non-production resources.
Data Transfer Costs
10–20% waste
Cross-AZ traffic ($0.01/GB), internet egress ($0.09/GB), and NAT Gateway charges ($0.045/GB) that compound at scale. Often invisible until the bill arrives.
RDS Overprovisioning
25–50% waste
Multi-AZ RDS instances sized for theoretical peak with Multi-AZ enabled even for dev databases. Single-AZ for non-prod, right-sized instances, and Aurora Serverless save 40–70%.
10 Proven AWS Cost Reduction Tactics
1. Savings Plans: The Single Biggest Lever
Save 30–72% on Compute
AWS Compute Savings Plans offer up to 66% off On-Demand rates in exchange for a 1- or 3-year commitment to a dollar/hour spend level. Unlike Reserved Instances, Savings Plans apply automatically to any EC2 instance type, size, region, or OS — maximum flexibility. Start with Compute Savings Plans at 1-year, no-upfront: ~40% discount with zero cash commitment. Analyze your last 30 days of EC2 spend, commit to 70% of your consistent baseline. Use
aws ce get-savings-plans-purchase-recommendation or the Cost Explorer Savings Plans recommendation tool.2. EC2 Right-Sizing with AWS Compute Optimizer
Save 25–40% on EC2
AWS Compute Optimizer analyzes 14 days of CloudWatch metrics and recommends optimal instance types. Enable it free in your account. For each recommendation: check P99 CPU and memory over 14 days. Downsize if P99 CPU < 40%. Use Graviton (ARM) instances — they're 20% cheaper than x86 for equivalent performance (m7g vs m6i). A typical 100-instance cluster with average 20% CPU has 60+ instances that could be halved in size: $60,000–$120,000/year saved.
3. Spot Instances for Fault-Tolerant Workloads
Save 60–90% on compute
Spot instances run on unused AWS capacity at up to 90% discount vs On-Demand — but can be interrupted with 2 minutes notice. Best for: batch jobs, ML training, CI/CD build agents, data processing, stateless auto-scaling workers. Use Spot with Auto Scaling Groups (mixed instances policy: Spot + On-Demand). Implement Spot interruption handling with
aws ec2 describe-spot-instance-requests and graceful shutdown hooks. A team running $100K/year in batch workloads on On-Demand can save $60K–$90K by moving to Spot.4. S3 Lifecycle Policies for Storage Tiering
Save 60–83% on S3 storage
S3 Standard ($0.023/GB) → S3-IA ($0.0125/GB at 30 days) → S3 Glacier Instant ($0.004/GB at 90 days) → S3 Glacier Deep Archive ($0.00099/GB at 180+ days). Apply lifecycle policies to all log buckets, artifact buckets, and backup buckets. Rule of thumb: if data isn't accessed in 30 days, it should move to S3-IA; 90+ days → Glacier. A team storing 100TB of logs in S3 Standard ($2,300/month) can move to a tiered policy: same 100TB at ~$600/month. Annual savings: $20,400.
5. Stop Non-Production Resources After Hours
Save 60–75% on dev/staging costs
Dev and staging environments don't need to run 24/7. An EC2 instance running 168 hours/week can run 56 hours (business hours M–F) instead — 67% reduction. Use AWS Instance Scheduler, Lambda functions, or AWS Systems Manager to automate start/stop based on a schedule. Also: tag all non-production resources with
Environment=dev and configure a tag-based policy to stop at 8 PM and start at 7 AM. Average team saves 60–70% on non-production EC2 and RDS.6. RDS Optimization: Right-Size + Aurora Serverless
Save 30–65% on database costs
Common RDS waste: (1) Multi-AZ enabled for dev databases ($2× cost, not needed); (2) Oversized instance class for actual query load; (3) On-Demand instead of Reserved. For production: use RDS Reserved Instances (1-year, no-upfront = 40% discount). For variable-load databases: migrate to Aurora Serverless v2 (scales to zero when idle, ~$0.12/ACU-hour). For dev/staging: single-AZ, smallest instance class that fits workload, stopped nights/weekends.
7. Reduce Data Transfer and NAT Gateway Costs
Save $10K–$100K+/yr at scale
AWS charges $0.01/GB for cross-AZ traffic and $0.045/GB for NAT Gateway processing. At scale these compound. Tactics: (1) Use VPC Endpoints for S3 and DynamoDB (free — eliminates NAT Gateway charges for those services); (2) Co-locate compute and data in same AZ where possible; (3) Use CloudFront for internet egress ($0.0075/GB vs $0.09/GB direct = 92% cheaper for high-volume content); (4) Enable S3 Transfer Acceleration only when needed (0.08/GB surcharge). A company transferring 1PB/year to internet saves $82,000 routing through CloudFront.
8. Delete Unused Resources with AWS Trusted Advisor + Cost Explorer
Find immediate waste
AWS Trusted Advisor (free for all accounts) identifies: idle EC2 instances, unattached EBS volumes ($0.10/GB/month when unattached), unused Elastic IPs ($0.005/hour when unattached), idle load balancers ($0.025/hour + $0.008/LCU-hour). Run Trusted Advisor monthly. Also: use Cost Explorer with "Unblended Cost by Service" + filter by zero-utilization tags. Average audit finds $2,000–$15,000/month in idle resources that can be terminated immediately.
9. Migrate to Graviton (ARM) EC2 Instances
Save 20% on EC2 with same performance
AWS Graviton3 (m7g, c7g, r7g) instances are 20% cheaper than equivalent x86 instances (m6i, c6i, r6i) for the same performance. Most Linux workloads, containerized apps, and web services run on Graviton without code changes. EKS, ECS, and Lambda all support ARM64. Migration path: update instance type in Terraform/CDK, rebuild Docker images for linux/arm64 (multi-arch build with Docker Buildx). Companies spending $500K/year on EC2 save $100K by migrating to Graviton.
10. AWS Enterprise Discount Program (EDP) Negotiation
Save 10–25% via commitment discount
If you're spending $1M+/year on AWS, you're eligible for the Enterprise Discount Program — a private pricing agreement with AWS where you commit to a minimum spend over 1–3 years in exchange for a percentage discount on all AWS services. Request an EDP review through your AWS account team. Typical discounts: 10% for $1M/year commitment, 15–20% for $3M+/year, 20–25% for $10M+/year. Always negotiate: start at 25%, settle for 15–18%.
Quick Wins: 4-Week Implementation Plan
| Week | Actions | Expected Savings |
|---|---|---|
| Week 1 | Run Trusted Advisor, delete idle resources, stop unattached EBS volumes, remove unused Elastic IPs; run Cost Explorer analysis by service | $2K–$15K/month immediate |
| Week 2 | Enable Compute Optimizer, identify top 20 EC2 instances for right-sizing; implement after-hours stop/start for dev/staging; apply S3 lifecycle policies to log buckets | Additional 15–30% off EC2 + S3 |
| Week 3 | Purchase Compute Savings Plans for committed EC2/Fargate baseline; migrate 2–5 dev workloads to Spot instances; add VPC Endpoints for S3 and DynamoDB | 30–40% off committed compute |
| Week 4 | Start Graviton migration for 3–5 low-risk services; implement Resource Groups tagging policy; schedule monthly Trusted Advisor review | 20% reduction on migrated services |
3 Real Case Studies
Series B SaaS Platform
60 engineers · $480K/yr AWS bill
$192K/yr saved
AWS audit revealed: 40% of EC2 running at <10% CPU (oversized from an old capacity model). Purchased 1-year Compute Savings Plans for baseline. Moved batch processing (Airflow workers, ML training) to Spot. Result: $80K from right-sizing, $72K from Savings Plans, $40K from Spot. Annual AWS spend: $480K → $288K. Total savings: 40% in 8 weeks with 2 engineers part-time.
Enterprise Media Company
200+ engineers · $2.1M/yr AWS bill
$630K/yr saved
Three-month FinOps engagement: (1) Negotiated EDP at 18% discount on committed spend ($2.1M × 18% = $378K); (2) S3 storage audit — 4PB of logs in S3 Standard moved to Glacier lifecycle policies ($168K/year saved); (3) After-hours shutdown of 180 dev instances ($84K saved). Total: $630K annual savings. Also found $120K of EBS volumes attached to terminated instances — one-time cleanup.
FinTech Startup (Series A)
25 engineers · $180K/yr AWS bill
$72K/yr saved
Startup had never done FinOps. Quick wins: migrated all RDS dev databases to Aurora Serverless v2 ($18K saved), stopped 12 dev EC2 instances outside business hours ($24K saved), bought 1-year Savings Plans for production compute ($21K saved), moved CI/CD build agents to Spot ($9K saved). Total: $72K/year, 40% of their AWS bill. Time to implement: 3 weeks for one DevOps engineer.
AWS Cost Tools (Free)
| Tool | What It Does | Best For |
|---|---|---|
| AWS Cost Explorer | Visualize cost trends, anomaly detection, Savings Plans recommendations | Monthly cost analysis |
| AWS Compute Optimizer | EC2, Lambda, ECS, EBS right-sizing recommendations from CloudWatch data | Right-sizing |
| AWS Trusted Advisor | Idle resources, security checks, cost optimizations across all services | Monthly audit |
| AWS Cost and Usage Report | Line-item billing data in S3 (query with Athena) | Deep-dive analysis |
| AWS Budgets | Budget alerts when spend exceeds thresholds | Governance + early warning |
| AWS Instance Scheduler | Start/stop EC2 and RDS on a schedule | Dev environment cost reduction |
Track AWS and All Your SaaS Costs Automatically
PricePulse monitors 90+ SaaS tools — alerts you when prices change before your renewal so you always negotiate from data.
Get Lifetime Access — $9 →