▸ Guides

AWS waste: the resources you pay for and don't use

Most AWS waste isn't one big mistake. It is volumes nobody deleted, addresses nobody released, instances stopped for now and logs kept forever, each a few dollars a month, spread across regions and accounts. None of them break anything, so they stay on the bill.

Each guide takes one of them: what AWS charges for it, how to find it with the AWS CLI, and how to clean it up safely.

[ What idle resources cost ]

Typical monthly cost of each kind of idle AWS resource
Unattached 500 GB gp3 EBS volume$40 a month
Stopped instance with a 100 GB gp3 volume and an Elastic IP$11.65 a month
Elastic IP associated with nothing$3.65 a month each
Log group set to Never expire$3 more each month per 100 GB it adds

US East (N. Virginia) list prices. Each guide shows the full pricing and when it was last checked.

The guides

Networking · 6 min read

AWS Elastic IP cost: what you pay, and how to find idle IPs

AWS charges $0.005 an hour for every public IPv4 address, about $3.65 a month per Elastic IP. What idle ones cost, and how to find them across regions and accounts.

Read the guide →Updated

Monitoring · 7 min read

CloudWatch log retention: find the log groups that never expire

CloudWatch keeps logs forever unless you set retention. What CloudWatch Logs costs, how to find log groups set to Never expire, and how to fix them with the AWS CLI.

Read the guide →Updated

Storage · 6 min read

Unused EBS volumes and snapshots: what they cost and how to find them

Unattached EBS volumes bill for every provisioned GB, and snapshots outlive their volumes. What EBS volumes and snapshots cost, and how to find them with the AWS CLI.

Read the guide →Updated

Compute · 5 min read

What does a stopped EC2 instance cost?

Stopped EC2 instances aren't billed for compute, but their EBS volumes and Elastic IPs are. What a stopped instance still costs, and how to find the long-stopped ones.

Read the guide →Updated

[ Across many accounts ]

Every command in these guides covers one account at a time. With ten or fifty accounts, finding idle resources means assuming a role in each, running the checks, and merging the results, then doing it again next month.

Resource Atlas does that in one scan. It runs inside an AWS account you own, reads every connected account through a read-only role, and lists EBS volumes, Elastic IPs, EC2 instances and log groups from all of them in one searchable inventory, with the unattached, stopped and never-expiring ones counted at the top. It covers the region you deploy it to in each account. Community is free for up to 2 AWS accounts.

Questions

What is AWS waste?

Resources that are still billed but no longer do anything useful: unattached EBS volumes, Elastic IPs associated with nothing, instances left stopped, and log groups that keep every log forever. None of them break anything, so they tend to stay on the bill until someone goes looking for them.

How do I find unused AWS resources across multiple AWS accounts?

Each guide here has AWS CLI commands that find one kind of idle resource in an account, in one region or all of them. Across many accounts you run them once per account, assuming a role in each. A multi-account inventory such as Resource Atlas lists these resources from every connected account in one place instead.

Which idle AWS resources cost the most?

Usually unattached EBS volumes, because they are billed for every provisioned GB, and for provisioned IOPS too: one unattached 500 GB gp3 volume costs $40 a month in US East (N. Virginia). Log groups that never expire start small but cost more every month.