Skip to main content

The AWS cost optimization checklist: 9 fixes that actually move the bill

· 4 min read
Founder, Dragon Fractal · ex-AWS engineer

Short version: most AWS waste is not a pricing negotiation, it is a pile of specific resources nobody turned off. This is the checklist we use: find the waste, rank it by dollars, fix the top items, and stop it from coming back. Each item below has a concrete number and a step-by-step guide.

How to approach it​

AWS Cost Explorer tells you what you spent. It does not walk your account and hand you a list of things to delete. So the loop that actually lowers the bill is:

  1. Find the idle, orphaned, and over-provisioned resources across every service.
  2. Rank them by monthly savings, not by how interesting they are to fix.
  3. Fix the top of the list first - the boring $32/month items add up faster than one heroic re-architecture.
  4. Prevent regressions by re-scanning on a schedule or in CI, so the same waste does not silently rebuild next quarter.

The checklist below is grouped by service area. Every item is a real, repeatable fix with a linked deep-dive.

Compute​

  • Migrate x86 instances to Graviton (ARM). Graviton families cost up to ~20% less than the equivalent x86 for the same vCPU/memory, and often run faster per dollar. For most modern workloads it is a one-line instance-type swap. Deep dive: Graviton migration guide

Storage​

  • Migrate EBS gp2 volumes to gp3. gp3 is ~20% cheaper than gp2 and usually faster, with an online migration and zero downtime. Deep dive: gp2 to gp3 migration
  • Delete old EBS snapshots. Snapshots cost $0.05/GB-month and accumulate forever - especially orphaned ones from deleted volumes and deregistered AMIs. Deep dive: Clean up old EBS snapshots

Networking​

  • Delete idle NAT Gateways. An idle NAT Gateway bills ~$32/month plus data charges for doing nothing. Many can be replaced with free VPC endpoints. Deep dive: Find and delete idle NAT Gateways
  • Delete idle load balancers. An ALB or NLB with no traffic still bills its ~$16/month base rate. Look for near-zero requests and empty target groups. Deep dive: Delete idle load balancers
  • Release unattached Elastic IPs. Since 2024 every public IPv4 address costs money, so an unattached Elastic IP bills ~$3.60/month for nothing. Deep dive: Stop paying for unattached Elastic IPs

Databases and analytics​

  • Right-size over-provisioned DynamoDB. Provisioned capacity bills whether you use it or not. Single-digit utilization means you are overpaying - right-size, auto-scale, or switch to on-demand. Deep dive: Right-size over-provisioned DynamoDB
  • Pause idle Redshift clusters. A cluster charges per node-hour regardless of query activity. Idle clusters from old analytics projects are pure waste - pause, snapshot, or move to Serverless. Deep dive: Idle Redshift clusters bill by the hour

Observability​

  • Set CloudWatch Logs retention. Log groups default to infinite retention, so logs pile up forever at $0.03/GB-month. Set a sane policy on never-expiring groups. Deep dive: Your CloudWatch Logs never expire

What this checklist does not cover​

To keep it honest: this list is about waste you can delete or right-size today, which is where the fastest, lowest-risk savings live. It does not cover:

  • Commitments - Reserved Instances and Savings Plans, which are a separate exercise once your steady-state usage is clean (buy commitments after you delete waste, not before, or you will commit to paying for waste).
  • Architecture - moving to spot, serverless, or cheaper data-transfer paths, which are higher-effort structural changes.

Clean up the list above first. It is the cheapest money you will ever save.

Automate the whole loop​

Doing this by hand once is worth it. Doing it by hand every quarter is not. Cloud Cost Analyzer runs all of these checks (and 80+ more) as a single read-only CLI scan - it finds every item on this list across your account, ranks them by savings, and you can wire it into CI so new waste fails a build instead of quietly showing up on next month's invoice. Your credentials never leave your environment, with an air-gapped option for regulated teams.

Run your first scan free