▸ Guides / Storage
Unused EBS volumes and snapshots: what they cost and how to find them
Updated · Prices checked against AWS pricing · 6 min read
An EBS volume is billed for every gigabyte it was created with, from the moment it exists until someone deletes it. It makes no difference whether it is attached to an instance or whether it holds any data. Snapshots work the same way, and they outlive the volumes they were taken from.
Unattached volumes and forgotten snapshots are some of the easiest AWS waste to find and some of the most expensive to leave alone. This guide covers what they cost, why they are left behind, and how to find and clean them up with the AWS CLI.
[ What it costs ]
Volumes are charged on their provisioned size, per GB-month. Snapshots are charged on the data they actually store. These are the US East (N. Virginia) prices; other regions differ.
| gp3 volume (includes 3,000 IOPS and 125 MB/s) | $0.08 per GB-month |
|---|---|
| gp2 volume | $0.10 per GB-month |
| io1 or io2 volume, plus provisioned IOPS | $0.125 per GB-month |
| st1 volume | $0.045 per GB-month |
| sc1 volume | $0.015 per GB-month |
| Snapshot, standard tier | $0.05 per GB-month |
| Snapshot, archive tier (90-day minimum) | $0.0125 per GB-month |
What a single forgotten volume adds up to:
| Unattached 500 GB gp3 volume, per month | $40 |
|---|---|
| Same volume, per year | $480 |
| Unattached 500 GB io2 volume with 10,000 IOPS, per month | $712.50 |
The io2 example is $62.50 for storage plus $650 for the IOPS it was provisioned with, which are billed whether anything uses them or not.
[ Why they're left behind ]
- ▸Terminating an instance keeps its extra volumes. The root volume is deleted with the instance by default. Data volumes attached after launch usually are not, so they stay behind as unattached volumes.
- ▸Volumes restored for a one-off job. Someone restores a snapshot to look at an old database or copy a file, detaches it, and moves on.
- ▸Snapshots outlive their volumes. Deleting a volume has no effect on its snapshots. Snapshots taken before a change, by a script or by a person, have no expiry unless something gives them one.
[ Find unattached volumes ]
An unattached volume has the status available. This lists them in the region your CLI is set to:
$ aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].[VolumeId,Size,VolumeType,CreateTime]" --output table
A volume attached to a stopped instance isn't available, but it is billed just the same. The stopped EC2 instance guide covers those.
[ Find old snapshots ]
This lists the snapshots your account owns in the current region, oldest first:
$ aws ec2 describe-snapshots --owner-ids self --query "sort_by(Snapshots, &StartTime)[].[SnapshotId,VolumeId,VolumeSize,StartTime,Description]" --output table
[ Clean up ]
Delete an unattached volume you no longer need. This can't be undone, so check that nobody needs its data first:
$ aws ec2 delete-volume --volume-id vol-0123456789abcdef0
Delete a snapshot you no longer need:
$ aws ec2 delete-snapshot --snapshot-id snap-0123456789abcdef0
[ Across many accounts ]
The commands above cover one account. With ten or fifty accounts, finding unattached volumes means assuming a role in each, running the commands, and adding up the sizes to see where the money goes.
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 their EBS volumes in one table with type, size and state, and the unattached ones counted at the top. It covers the region you deploy it to in each account, and it doesn't list snapshots, so the snapshot commands above are still the way to find those. Community is free for up to 2 AWS accounts.
[ See it in the demo ]
The live demo scans a sample estate of three AWS accounts. Its EBS volumes page lists 23 volumes and flags the 8 that are unattached, about 5 TB between them, including old-db-snapshot-restore (1,000 GB), ml-training-scratch and jenkins-legacy-root. At list prices that is over $400 a month for storage nothing uses.
Questions
Do unattached EBS volumes cost money?
Yes. EBS volumes are billed for their provisioned size every month, whether they are attached to an instance or not and however much data they hold. An unattached 500 GB gp3 volume costs $40 a month in US East (N. Virginia).
How much does an EBS snapshot cost?
In US East (N. Virginia), snapshots in the standard tier cost $0.05 per GB-month, charged on the data the snapshot stores rather than the size of the volume. The archive tier costs $0.0125 per GB-month, with a 90-day minimum and $0.03 per GB to restore.
Does deleting an EBS volume delete its snapshots?
No. Deleting a volume has no effect on the snapshots made from it, so their storage keeps being billed until you delete them too.
Why didn't deleting a snapshot lower my bill?
Snapshots of the same volume are incremental and share data. Deleting one only removes the data no other snapshot references; anything a later snapshot still needs is kept and billed to that snapshot instead.
Is it safe to delete an unattached EBS volume?
Only if nobody needs its data, because a deleted volume cannot be recovered unless a Recycle Bin rule keeps it. If in doubt, take a snapshot first: it stores only the data in use, at a lower rate than the volume.