Skip to main content

AWS savings checks

AWS opportunities in Cost Savings come from two sources: AWS Cost Optimization Hub, with AWS's own estimates, and CloudYali's own rules, which read your resources, CloudWatch metrics and Cost & Usage Report. Both run once a day.

AWS Cost Optimization Hub​

CloudYali collects every active Cost Optimization Hub recommendation in each connected account. The monthly savings is AWS's estimate. Turn on Cost Optimization Hub in the account, and Compute Optimizer for rightsizing; CloudYali reads them but does not turn them on.

RecommendationCategoryRunbook
Rightsize an EC2 instanceRightsizingYes
Rightsize an RDS instanceRightsizingGeneral
Stop an idle EC2 instanceWastageYes
Delete an EBS volumeWastageYes
Delete an EC2 Auto Scaling groupWastageGeneral
Upgrade an EBS volume to gp3RightsizingYes
Move an EC2 instance to GravitonRightsizingGeneral
Buy a Compute Savings PlanCommitmentYes
Buy RDS Reserved InstancesCommitmentGeneral

Every other Cost Optimization Hub recommendation, such as Lambda, ECS on Fargate, EC2 Instance Savings Plans, SageMaker Savings Plans or ElastiCache, OpenSearch, Redshift, MemoryDB and DynamoDB reservations, appears under Other. It has no savings bucket, so it cannot be marked implemented yet.

CloudYali's rules​

CloudYali's rules price most findings from AWS's public on-demand prices, refreshed weekly, and from the last 30 days of your Cost & Usage Report. Rules marked No amount find the resource but do not estimate its savings today; their opportunities show as Unconverted.

Compute​

CheckDetectsMonthly savings
Idle EC2 instanceDaily average CPU under 2% and network under 5 MB in and out, on all of the last 30 daysIts on-demand compute cost over the last 30 days, excluding hours covered by Reserved Instances or Savings Plans
Low-utilization EC2 instanceDaily average CPU under 10% on all of the last 14 daysThe price difference to one size smaller in the same family
Intel EC2 instanceAn instance on an Intel familyThe price difference to the same size on Graviton
Graviton migrationAn Intel or AMD instance with a direct Graviton equivalentThe price difference to the Graviton equivalent
Idle Bedrock provisioned throughputProvisioned throughput in service for 7 days or more with no invocationsIts cost over the last 30 days
Unused Lambda SnapStart versionsA SnapStart version with no invocations in 90 days and no aliasIts cached memory at the SnapStart rate
EKS extended supportA cluster in, or within 90 days of, extended supportThe extended support premium per cluster-hour

Databases​

CheckDetectsMonthly savings
Idle RDS instanceNo database connections for 30 daysIts on-demand compute cost over the last 30 days
Underutilized RDS instanceCPU under 60% and low read and write IOPS over 30 daysThe price difference to one class smaller
Stopped RDS instanceStopped for 5 days or more, close to AWS's automatic restart after 7Its allocated storage cost
Unused RDS Reserved InstanceA reservation with no matching running instanceThe reservation's monthly cost
Previous-generation RDS classAn instance on db.m1 to m4, r3, r4, t1 or t2The price difference to the same size on a newer family
Oversized RDS storageUnder 25% of allocated storage used for 7 daysThe cost of storage above peak use plus 20%
RDS on io1 or io2 storageProvisioned-IOPS storage that gp3 could serveThe price difference to gp3
RDS, Aurora, DocumentDB, ElastiCache and OpenSearch extended supportAn engine version in, or within 90 days of, extended supportAWS's extended support fee for that engine
Inactive DynamoDB tableNo reads or writes for 30 daysNo amount
Old RDS snapshotsAny RDS snapshot older than 7 daysNo amount
Long-retained manual RDS snapshotsA manual snapshot older than 90 daysNo amount

Storage​

CheckDetectsMonthly savings
EBS gp2 to gp3Any gp2 volumeThe price difference to gp3 with matching performance
Underutilized EBS volumeAn attached volume with almost no reads or writes for 15 daysIts storage cost
EBS performanceProvisioned IOPS or throughput above what the volume uses on 90% of 30 daysThe cost of the unused IOPS and throughput
Unattached EBS volumeA volume attached to nothingNo amount
Snapshot of a deleted volumeA snapshot whose source volume no longer existsNo amount
Old EBS snapshotA snapshot older than 120 daysNo amount
EFS Intelligent-Tiering offNo Infrequent Access lifecycle on a file systemHalf the data moved to Infrequent Access
Unused EFSA file system with no mount targetsNo amount
Inactive EFSNo client connections or IO for 30 daysNo amount
S3 incomplete multipart uploadsIncomplete uploads older than 30 daysTheir storage at the S3 Standard rate
ECR repository without a lifecycle policyNo lifecycle policy on a repositoryUntagged images older than 90 days at $0.10 per GB
CloudWatch log group kept foreverA log group with no retention periodThe storage cost of logs older than 90 days

Networking and other​

CheckDetectsMonthly savings
Unused Elastic IPAn Elastic IP address attached to nothing$3.65
Inactive NAT gatewayNo outbound traffic for 30 daysNo amount
Unused load balancerA load balancer with no listener or no target groupNo amount
Unused internet gatewayAn internet gateway attached to no VPCNo amount; AWS does not charge for it
Unused secretA secret not read for 90 daysNo amount
Redundant CloudTrail trailsMore than one trail; the first is freeNo amount

Three rules have their own runbook: EBS gp2 to gp3, unused Elastic IP and idle RDS instance. Every other opportunity shows a general runbook in its details.