Real scan — anonymized data

CostPatrol found $284/mo
in savings — in a single region

We scanned a production AWS account in ap-northeast-2. Under 60 seconds. 14 optimization opportunities across 6 rules. Here's every finding.

Total savings
$284/mo
Findings
14
Rules matched
6
Scan time
< 60s

Every finding, with exact fix commands

14 optimization opportunities across 6 rules. Real dollar amounts. Anonymized resource names.

Unattached EBS Volumes
EBS-O002 · 4 resources
$180/mo
staging-load-test
$50.00/mo
gp2 · 500GB · available · 1,790 days unattached
Delete volume after creating snapshot if data is needed
$ aws ec2 create-snapshot --volume-id vol-0a1b2c3d4e5f --description "Backup before deletion" $ aws ec2 delete-volume --volume-id vol-0a1b2c3d4e5f
data-pipeline-temp
$50.00/mo
gp2 · 500GB · available · 156 days unattached
Delete volume after creating snapshot if data is needed
$ aws ec2 create-snapshot --volume-id vol-1f2e3d4c5b6a --description "Backup before deletion" $ aws ec2 delete-volume --volume-id vol-1f2e3d4c5b6a
analytics-backup
$50.00/mo
gp2 · 500GB · available · 156 days unattached
Delete volume after creating snapshot if data is needed
$ aws ec2 create-snapshot --volume-id vol-9a8b7c6d5e4f --description "Backup before deletion" $ aws ec2 delete-volume --volume-id vol-9a8b7c6d5e4f
legacy-webserver
$30.00/mo
gp2 · 300GB · available · 2,451 days unattached
Delete volume after creating snapshot if data is needed
$ aws ec2 create-snapshot --volume-id vol-5e4f3a2b1c0d --description "Backup before deletion" $ aws ec2 delete-volume --volume-id vol-5e4f3a2b1c0d
GP2 to GP3 EBS Migration
EBS-O001 · 5 resources
$56/mo
api-server-root
$20.00/mo
gp2 · 1,000GB · attached to i-0a1b2c3d4e5f6789
Migrate to GP3 (20% cheaper, 3000 IOPS + 125 MB/s baseline included)
$ aws ec2 modify-volume --volume-id vol-7c8d9e0f1a2b --volume-type gp3
staging-load-test
$10.00/mo
gp2 · 500GB · available
Migrate to GP3 (20% cheaper, 3000 IOPS + 125 MB/s baseline included)
$ aws ec2 modify-volume --volume-id vol-0a1b2c3d4e5f --volume-type gp3
data-pipeline-temp
$10.00/mo
gp2 · 500GB · available
Migrate to GP3 (20% cheaper, 3000 IOPS + 125 MB/s baseline included)
$ aws ec2 modify-volume --volume-id vol-1f2e3d4c5b6a --volume-type gp3
analytics-backup
$10.00/mo
gp2 · 500GB · available
Migrate to GP3 (20% cheaper, 3000 IOPS + 125 MB/s baseline included)
$ aws ec2 modify-volume --volume-id vol-9a8b7c6d5e4f --volume-type gp3
legacy-webserver
$6.00/mo
gp2 · 300GB · available
Migrate to GP3 (20% cheaper, 3000 IOPS + 125 MB/s baseline included)
$ aws ec2 modify-volume --volume-id vol-5e4f3a2b1c0d --volume-type gp3
Idle RDS Instances
RDS-O001 · 2 resources
$24 - $33/mo
api-prod-read-replica
$16.27/mo
Zero active connections · idle
Stop or delete idle RDS instance
# Option 1: Snapshot and delete $ aws rds create-db-snapshot --db-instance-identifier api-prod-read-replica --db-snapshot-identifier api-prod-read-replica-final $ aws rds delete-db-instance --db-instance-identifier api-prod-read-replica --skip-final-snapshot # Option 2: Stop instance $ aws rds stop-db-instance --db-instance-identifier api-prod-read-replica
api-prod-primary
$8 - $16/mo
Low utilization · underused
Stop, downsize, or delete low-utilization RDS instance
# Option 1: Snapshot and delete $ aws rds create-db-snapshot --db-instance-identifier api-prod-primary --db-snapshot-identifier api-prod-primary-final $ aws rds delete-db-instance --db-instance-identifier api-prod-primary --skip-final-snapshot # Option 2: Downsize $ aws rds modify-db-instance --db-instance-identifier api-prod-primary --db-instance-class db.t3.micro --apply-immediately
Unused RDS Read Replicas
OPT-024 · 1 resource
$16/mo
api-prod-read-replica
$16.27/mo
Read replica with zero replica lag queries
Delete unused read replica after confirming no dependent workload
$ aws rds delete-db-instance --db-instance-identifier api-prod-read-replica --skip-final-snapshot
S3 Missing Lifecycle Rules
S3-O001 · 1 resource
$4 - $6/mo
ml-training-data-prod
$3.64 - $6.37/mo
395.94GB · $9.11/mo · No lifecycle policy
Add lifecycle policy to transition to Intelligent-Tiering after 30 days
$ aws s3api put-bucket-lifecycle-configuration \ --bucket ml-training-data-prod \ --lifecycle-configuration '{ "Rules": [{ "ID": "TransitionToIntelligentTiering", "Status": "Enabled", "Filter": {}, "Transitions": [{ "Days": 30, "StorageClass": "INTELLIGENT_TIERING" }] }] }'
Orphaned Elastic IPs
EIP-O001 · 1 resource
$3.60/mo
52.78.xxx.xxx
$3.60/mo
Elastic IP not associated with any resource
Release orphaned Elastic IP address
$ aws ec2 release-address --allocation-id eipalloc-0a1b2c3d4e5f

What AWS Cost Explorer misses

AWS Cost Explorer
Monthly spend graph — but no resource-level detail
Shows cost went up — but not which volume or instance
No fix commands — you still have to figure out what to do
Can't detect unattached EBS, idle RDS, or orphaned EIPs
CostPatrol
Exact resource name, ID, and savings amount
"This 500GB volume has been unattached for 1,790 days"
Copy-paste AWS CLI commands for every finding
Severity-coded findings sorted by savings impact

AWS tells you your bill went up. CostPatrol tells you which volume has been bleeding $50/mo for almost 5 years — and gives you the one command to stop it.

See what CostPatrol finds in your AWS account

Free scan shows your total savings. Upgrade to Pro for full findings, fix commands, and daily Slack alerts.