This AWS cost optimization checklist collects the 40 quick wins we reach for first across 500+ environments. They are grouped so you can hand a section to the team that owns it, and ordered within the program so you do the safe, reversible cuts before the structural ones, and never buy a commitment before the footprint is right. Most items take hours, not weeks, and none of them require slowing a workload that matters.
This checklist links up to our complete guide to AWS cost optimization, the pillar for this cluster, and the full structured version is in how to run an AWS cost optimization assessment. The grouping follows the Cut step of our See, Cut, Lock, Run method.
Clear idle and zombie spend first, rightsize next, fix storage and networking, then commit. Buying Savings Plans or Reserved Instances before rightsizing locks waste in for years, so commitments are deliberately last on this list.
Visibility and quick housekeeping (1 to 8)
| # | Quick win |
|---|---|
| 1 | Enable the Cost and Usage Report and Cost Explorer so every dollar is visible by service and account |
| 2 | Turn on AWS Cost Anomaly Detection to catch spikes the day they start |
| 3 | Apply cost allocation tags and activate them so spend can be owned by team, product and environment |
| 4 | Review AWS Trusted Advisor cost checks for low-hanging recommendations |
| 5 | Delete stopped EC2 instances that are no longer needed but still hold attached storage |
| 6 | Release unattached Elastic IP addresses, which bill while idle |
| 7 | Remove idle load balancers with no healthy targets |
| 8 | Find and shut down forgotten dev and test resources, especially in non-default Regions |
Compute (9 to 18)
| # | Quick win |
|---|---|
| 9 | Run Compute Optimizer and rightsize EC2 against p95 utilization, not peak |
| 10 | Schedule non-production EC2 to stop nights and weekends |
| 11 | Move interruption-tolerant workloads to Spot capacity |
| 12 | Migrate compatible workloads to Graviton instances for better price-performance |
| 13 | Tune Auto Scaling so groups scale in as well as out |
| 14 | Rightsize Lambda memory, the main driver of its cost, against real duration |
| 15 | Consolidate underused EKS node groups and adopt a consolidating autoscaler |
| 16 | Push bursty container workloads to Fargate so idle costs nothing |
| 17 | Retire oversized instances left from a migration that never got revisited |
| 18 | Replace always-on batch boxes with event-driven or scheduled compute |
Want these 40 wins worked through your account, with the saving quantified?
Our AWS cost audit runs this checklist across your estate, sizes each lever in dollars, and proves the saving before any change reaches production. On the performance model, you pay only from realized savings. No savings, no fee.
Book an AWS cost audit →Storage (19 to 26)
| # | Quick win |
|---|---|
| 19 | Move infrequently accessed S3 data to a cheaper storage class |
| 20 | Enable S3 Intelligent-Tiering for data with unknown access patterns |
| 21 | Set S3 lifecycle policies to expire or archive old objects automatically |
| 22 | Delete incomplete multipart uploads, which silently accumulate storage cost |
| 23 | Upgrade gp2 EBS volumes to gp3, which is cheaper and decouples IOPS from size |
| 24 | Delete unattached EBS volumes left behind by terminated instances |
| 25 | Set retention on EBS snapshots and remove obsolete manual ones |
| 26 | Review CloudWatch Logs retention, which often defaults to never expire |
Databases (27 to 32)
| # | Quick win |
|---|---|
| 27 | Rightsize RDS instances against memory and connections, not just CPU |
| 28 | Move RDS storage to gp3 and stop over-provisioning IOPS |
| 29 | Put steady DynamoDB tables on Provisioned capacity with auto scaling |
| 30 | Move bursty or idle DynamoDB tables to On-Demand so quiet periods cost nothing |
| 31 | Pause non-production Redshift clusters outside working hours |
| 32 | Migrate older Redshift clusters to RA3 so storage scales separately from compute |
Networking (33 to 36)
| # | Quick win |
|---|---|
| 33 | Reduce NAT Gateway data processing by using gateway endpoints for S3 and DynamoDB |
| 34 | Keep chatty services in the same Availability Zone to cut cross-AZ transfer |
| 35 | Use a CDN to offload repeat egress instead of serving directly from origin |
| 36 | Review inter-Region replication and confirm each copy is actually needed |
Commitments, last on a clean baseline (37 to 40)
| # | Quick win |
|---|---|
| 37 | Cover the steady compute core with Compute Savings Plans for cross-family flexibility |
| 38 | Buy Reserved Instances or reserved capacity for fixed RDS, Redshift and ElastiCache |
| 39 | Ladder commitment terms so you are not re-rating the whole estate at once |
| 40 | For large, durable spend, model whether an Enterprise Discount Program adds value |
The buying logic behind items 37 to 40 is in Savings Plans versus Reserved Instances, and the EDP decision in how to negotiate an AWS Enterprise Discount Program. AWS services, families and features referenced above reflect offerings as of May 2026; verify current options in the AWS console, as they change.
The AWS Cost Optimization Field Guide expands every item here into the queries, thresholds and savings model we use on engagements. It is the downloadable companion to this checklist.
The short version
Work this AWS cost optimization checklist in order: clear idle and zombie spend, rightsize compute and databases, fix storage and networking, then commit on the clean baseline. Most teams capture a double-digit reduction from the first three sections alone. When you want all 40 wins worked through your account with the saving proven first, that is what our AWS cost optimization service delivers, including the option to pay only from realized savings.