August 15, 2026
A 30-Minute AWS Cost Audit Checklist
Before running a full cost and security audit, I always start with a handful of quick checks that tend to surface the biggest wins fastest.
Compute
- Look for EC2 instances running 24/7 that could be scheduled or right-sized.
- Check whether workloads can move to Graviton (ARM) instances. Most run there at a lower cost with no code changes for supported runtimes.
- Confirm Savings Plans or Reserved Instances cover steady-state workloads.
Storage
- Check for unattached EBS volumes.
- Confirm unused EBS and RDS snapshots are actually being deleted, not just accumulating. Automated lifecycle rules (Data Lifecycle Manager, backup retention policies) handle this; manual snapshots often don't have either.
- Look for gp2 volumes that could move to gp3. It has a cheaper baseline and no downtime to switch.
- Check S3 lifecycle policies: old logs and backups often sit in Standard storage indefinitely.
- Look for buckets with versioning enabled but no lifecycle rule cleaning up old versions.
Databases
- Are RDS/Aurora instances rightsized for their actual CPU and memory usage, not just provisioned for a peak that rarely happens?
- Check for Multi-AZ enabled on non-production databases. Dev and staging often inherit prod's setting and pay double for redundancy nobody needs there.
- Confirm Reserved Instances or Savings Plans cover database workloads too. Teams often set these up for EC2 and forget RDS entirely.
Networking
- NAT Gateway data processing charges are an easy one to miss: check if VPC endpoints could replace some of that traffic.
- Look for load balancers (ALB/NLB) with zero registered targets. Cheap to create, easy to forget, and they bill around the clock.
- Check for unattached Elastic IPs. AWS bills for these once they're not attached to a running instance.
None of this replaces a full Well-Architected review, but it's a fast way to know whether an account is worth digging into further.