Home / AWS

AWSChecklistIntermediate

Transformation: an AWS cost programme — Compute Optimizer, Savings Plans and clean-up

Make AWS cost a managed programme rather than a monthly surprise. Cost allocation tags, waste removal, rightsizing with Compute Optimizer, scheduling, storage tiers, then Savings Plans and Reserved Instances at the right coverage, with budgets to keep it there.

Deepak Bhardwaj2 min read

Applies toAWS Cost Explorer, AWS Compute Optimizer, Savings Plans, Reserved Instances, AWS Budgets, Cost Anomaly Detection

Order of work

  1. Visibility → 2. Waste → 3. Rightsize and schedule → 4. Storage and data transfer → 5. Commitments → 6. Governance

Buying Savings Plans before rightsizing locks in waste for one or three years.

1. Visibility

  • Cost allocation tags (owner, app, env, costcenter) activated in Billing
  • Tag policy in Organizations; untagged spend reported weekly
  • Cost and Usage Report (CUR 2.0 / Data Exports) to S3, queried with Athena or QuickSight

2. Waste

# Unattached EBS volumes
aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].[VolumeId,Size,VolumeType,CreateTime]" --output table
# Unassociated Elastic IPs
aws ec2 describe-addresses --query "Addresses[?AssociationId==null].[PublicIp,AllocationId]" --output table
# Old snapshots
aws ec2 describe-snapshots --owner-ids self --query "Snapshots[?StartTime<'2025-10-01'].[SnapshotId,VolumeSize,StartTime]" --output table
  • Unattached volumes, idle EIPs, old snapshots and AMIs cleaned
  • Idle load balancers and NAT gateways in unused VPCs removed
  • CloudWatch log groups have retention set

3. Rightsize and schedule

aws compute-optimizer get-enrollment-status
aws compute-optimizer get-ec2-instance-recommendations \
  --query "instanceRecommendations[?finding=='OVER_PROVISIONED'].[instanceArn,currentInstanceType,recommendationOptions[0].instanceType]" --output table
  • Compute Optimizer enabled org-wide (enhanced metrics for better accuracy where justified)
  • Over-provisioned EC2, ASGs, Lambda memory and EBS rightsized
  • Dev/test stopped out of hours (EventBridge Scheduler or Instance Scheduler)
  • Graviton evaluated for compatible workloads
  • Spot for fault-tolerant batch, CI and stateless workers

4. Storage and data transfer

  • gp2 → gp3; S3 Intelligent-Tiering or lifecycle rules for cold data
  • S3 noncurrent version expiration set
  • Gateway VPC endpoints for S3/DynamoDB to cut NAT data processing
  • Cross-AZ chatter reviewed for chatty services

5. Commitments

Instrument Covers Flexibility
Compute Savings Plans EC2 any family/region, Fargate, Lambda Highest
EC2 Instance Savings Plans One instance family in one region Medium, deeper discount
Reserved Instances RDS, ElastiCache, OpenSearch, Redshift, etc. Per service
aws ce get-savings-plans-purchase-recommendation --savings-plans-type COMPUTE_SP \
  --term-in-years ONE_YEAR --payment-option NO_UPFRONT --lookback-period-in-days THIRTY_DAYS
  • Commit to the stable baseline after rightsizing, not the peak
  • Ladder purchases (smaller commitments every quarter) instead of one big buy
  • Coverage and utilisation reviewed monthly

6. Governance

  • AWS Budgets per account and per app with alerts to owners
  • Cost Anomaly Detection monitors to on-call chat
  • Monthly FinOps review with engineering owners; savings tracked