Find the AWS resources that should be dead but still bill you.
zombiecost is a free, read-only CLI. One scan, one table, a number at the bottom you can act on today.
$ pip install zombiecost $ zombiecost --profile prod Check Region Resource What we found Est. $/month ec2-idle eu-west-1 i-0a1b2c3d4e5f67890 m5.large 'batch-worker' averaged 1.2% CPU 70.08 nat-idle eu-west-1 nat-0123456789abcdef0 NAT gateway moved 4.1 MiB in 14 days 32.85 lb-unused us-east-1 legacy-api application load balancer has no targets 16.43 ebs-unattached eu-west-1 vol-0fedcba9876543210 500 GiB gp2 volume not attached to anything 50.00 eip-unused us-east-1 eipalloc-0abc123def45 Elastic IP 54.12.34.56 is not associated 3.65 Estimated waste: $173.01 per month across 5 resources in 17 regions.
What it checks
- EBS volumes attached to nothing, and snapshots older than 90 days no AMI uses
- Elastic IPs not associated with anything
- EC2 instances under 3% CPU and RDS instances with zero connections
- NAT gateways moving almost no traffic
- Load balancers with no targets, or serving zero requests
- S3 buckets nothing has written to in six months
Built not to annoy you
- Read-only. The IAM policy is eleven Describe, List and Get actions. It is in the README.
- No false alarms on new things. Anything younger than 3 days is skipped.
- Honest about limits. S3 findings say "reads unknown", because reads are invisible without paid request metrics.
- Fast. All regions in parallel, about 9 seconds on an empty account.
Source and IAM policy: github.com/arabo11/zombiecost. MIT licensed.
Want this as a weekly scan with a Slack message, across all your accounts, without running anything yourself?
That is what gets built next if enough people want it. Leave an email and you will hear when it exists. Nothing else, ever.