When a client came to us with an AWS bill that had crept past their comfort zone, the instinct was to blame growth. In reality, most of the spend was waste — resources nobody was watching. Here's the playbook we used to take 35% off the monthly invoice without touching a single feature.
1. Why measure before you cut?
We started with Cost Explorer and a tagging audit. You can't optimize what you can't attribute, so the first win was simply tagging every resource by environment and team. Within a day it was obvious that non-production environments were running 24/7 and accounted for nearly a third of compute spend.
2. How do you right-size EC2 instances without guessing?
Half the EC2 fleet was over-provisioned — instances sized for a launch-day peak that never returned. Using CloudWatch utilization data and AWS Compute Optimizer recommendations, we right-sized the worst offenders down one or two tiers, and moved bursty workloads to Graviton instances for better price-performance. A single m5.2xlarge running at 8% average CPU utilization, for example, dropped to an m6g.large with no observable latency change — a >70% per-instance cost cut for that workload alone.
3. Schedule what doesn't need to run
Dev and staging environments now shut down on nights and weekends via a simple scheduler — a scheduled Lambda function that stops tagged EC2 instances and RDS clusters at 8pm and starts them again at 8am on weekdays. That one change cut their cost roughly in half — and developers barely noticed, because the environments spin back up before the workday starts. The scheduler itself is intentionally simple: read instances tagged AutoSchedule=true, check the current time against a per-tag schedule, and call StopInstances or StartInstances accordingly.
4. Commit to the steady-state baseline
Once the noise was gone, the remaining steady-state load was predictable. We covered it with AWS Savings Plans and Reserved Instances, keeping on-demand only for genuinely variable traffic. Storage got a cleanup too: orphaned EBS volumes and old snapshots deleted, infrequently accessed data moved to cheaper S3 tiers via lifecycle policies.
5. How do you keep the savings from eroding?
The savings above are a snapshot; without a process they erode as new resources get spun up untagged and unmonitored. We set up Cost Explorer budget alerts per environment, a monthly tagging-compliance report, and a lightweight review against the AWS Well-Architected Framework's cost-optimization pillar every quarter. That turns a one-time win into a maintained baseline.
Which changes produced the savings?
| Lever | What we changed | Stated effect |
|---|---|---|
| 1. Measure | Cost Explorer review and a tagging audit — every resource tagged by environment and team | Within a day, showed non-production environments running 24/7 and accounting for nearly a third of compute spend |
| 2. Right-size | Over-provisioned EC2 instances moved down one or two tiers using CloudWatch utilization data and AWS Compute Optimizer recommendations; bursty workloads moved to Graviton | One m5.2xlarge at 8% average CPU became an m6g.large with no observable latency change — a >70% per-instance cost cut for that workload |
| 3. Schedule | A scheduled Lambda function stops tagged dev and staging EC2 instances and RDS clusters at 8pm and starts them at 8am on weekdays | Cut the cost of those environments roughly in half |
| 4. Commit | Savings Plans and Reserved Instances for the steady-state load, on-demand only for genuinely variable traffic; orphaned EBS volumes and old snapshots deleted, infrequently accessed data moved to cheaper S3 tiers | No separate figure stated — the predictable baseline is covered by commitments and storage sits in cheaper tiers |
| 5. Standing discipline | Cost Explorer budget alerts per environment, a monthly tagging-compliance report, and a quarterly review against the AWS Well-Architected cost-optimization pillar | No figure stated — turns a one-time win into a maintained baseline |
The result
A 35% reduction in monthly spend, sustained — plus dashboards and budget alerts so the savings don't quietly erode. That 35% is this one client's result; across engagements, our AWS optimization work averages 30% savings. The biggest lesson: cloud cost is an ongoing discipline, not a one-time project.
Wondering what your own cloud bill is hiding? We offer a fixed-scope AWS cost review, run with the same evidence-first discipline as everything else we build.