Available now for new projects.Get a free DevOps audit →

Blog / Cloud Cost

How to Cut Your AWS Bill by 40%: A Practical Cloud Cost Optimization Guide

Most teams overspend on AWS by 20 to 40 percent, not because they are careless, but because nobody owns the bill. Here is the exact checklist I run on every audit to cut cloud spend without touching performance.

Start with the five biggest cost leaks

Before any clever optimization, close the leaks that show up on almost every account:

  • Oversized instances. Compute picked for peak or for a guess, running 24/7 at 10% utilization.
  • Idle and orphaned resources. Unattached EBS volumes, old snapshots, idle load balancers and stale Elastic IPs.
  • No autoscaling. Paying for peak capacity all night and all weekend.
  • Everything in hot storage. Cold data sitting in S3 Standard instead of Infrequent Access or Glacier.
  • On-demand for steady workloads. Baseline compute that should be on a Savings Plan.
Where the ~40% savings come fromUsersglobal trafficCloudFrontcache, less egressALBload balancerAuto Scalingright-sized EC2RDSright-sized DBS3 + lifecyclecold data → cheaper tierSavings Planssteady workloadsCloudWatchbudget alertsScale to zerooff-peak, nightlyCyan = the levers that cut the bill without hurting performance.
A cost-optimized AWS architecture, the cyan blocks are the levers that cut the bill.

1. Right-size compute to real usage

Pull 2 to 4 weeks of CloudWatch CPU and memory metrics and match instance size to the p95, not the peak. Moving from an m5.2xlarge at 12% CPU to an m6g.large (Graviton) is often a 60 to 70 percent line-item cut on that service alone.

2. Autoscale, and scale to zero off-peak

Put stateless services behind Auto Scaling and schedule non-production environments to shut down nights and weekends. A dev/staging fleet that runs 45 hours a week instead of 168 is a ~73% saving on that environment.

# Terraform: scale a dev ASG to zero at night
resource "aws_autoscaling_schedule" "dev_down" {
  scheduled_action_name  = "dev-scale-down"
  min_size = 0
  max_size = 0
  desired_capacity = 0
  recurrence = "0 20 * * MON-FRI"   # 20:00 weekdays
  autoscaling_group_name = aws_autoscaling_group.dev.name
}

3. Tier your storage

Turn on S3 lifecycle rules so logs and backups roll to Infrequent Access after 30 days and Glacier after 90. Delete incomplete multipart uploads. This is a five-minute change that quietly saves money every month.

4. Commit to Savings Plans for the baseline

Look at your steady, always-on usage and cover it with a 1-year Compute Savings Plan (up to ~66% off on-demand). Keep on-demand only for the spiky top of your traffic. Never commit to more than your reliable baseline.

5. Make cost visible so it stays fixed

  • Budget alerts so a surprise bill never lands silently.
  • Cost allocation tags by team and environment, so you know where money goes.
  • A monthly 15-minute review of the top 5 services. That habit alone keeps the bill flat as you grow.

Key takeaways

  • Right-size to p95 usage and prefer Graviton, biggest single win.
  • Autoscale and switch non-prod off outside work hours.
  • Tier storage with S3 lifecycle rules.
  • Cover your baseline with Savings Plans, not on-demand.
  • Tag, alert and review, so savings don't drift back.

Want the 40% found for you?

I'll run a free 30-minute cost audit on your AWS account and send a prioritized, no-obligation report of exactly where the savings are.

Get a free DevOps audit →