Skip to content

When to replace stopped-instance EBS volumes with snapshots

Stopping an EC2 instance stops the compute bill — but every EBS volume attached to it keeps billing at full provisioned price, month after month, exactly as if it were serving production traffic. If you keep stopped instances around “just in case,” snapshot-parking their volumes can cut that cost dramatically: in one real account it recovered $109,926 per month ($1,319,110 per year). This guide explains the pattern and, just as importantly, when not to use it.

Two effects stack:

  1. Snapshot storage has a lower per-GB rate than EBS volumes. In the 2023 engagement behind our million-dollar case study, N. Virginia GP3 storage cost $0.08 per GB-month against $0.05 for snapshots — a 37.5% saving on rate alone. Check current EBS pricing for today’s figures.
  2. Snapshots bill for actual data; volumes bill for provisioned size. A 100 GB volume that is half full still bills for 100 GB, while its snapshot bills only for the data blocks written. At the prices above: $8/month for the volume, about $2.50 for the snapshot — a 68.7% saving.

The second effect is the big one, because stopped-instance fleets are full of empty space. In the case-study account, 19,136 deleted volumes totaling 1,347,115 GB (1.29 PB) shrank to just 103,906 GB of snapshot data. Over 1.18 PB of paid-for storage held nothing.

  1. Identify stopped EC2 instances with attached EBS volumes and confirm with the owners that they must remain restorable — not running, restorable.
  2. Snapshot every attached volume.
  3. Record restore metadata in a durable store before touching anything: instance-to-volume mapping, snapshot IDs, volume size, type and performance settings, Availability Zone, device name, and attachment order.
  4. Delete the EBS volumes.
  5. To revive an instance, reverse the process: create volumes from the snapshots, attach them using the recorded device mapping, delete the now-redundant snapshots, and start the instance.

Restore must be automated and tested before you delete anything at scale. In the case study, AWS Step Functions and a few other serverless services handled the restore flow, keeping “un-parking” an instance a self-service operation instead of a support ticket. CloudPouch finds the opportunity and sizes it; the parking and restore automation is AWS work you build in your own account.

  • Stopped instances are rarely or never restarted, but deleting them is not an option.
  • The attached volumes are large, numerous, or mostly empty.
  • You can build and test the restore path, and volume-attachment metadata is tracked reliably.
  • A restore that takes minutes (create volumes, attach, boot) is acceptable to the business.
  • The instance may need to start again on short notice — parked instances cannot boot until volumes are recreated.
  • You cannot reliably reproduce the attachment layout (device names and order matter to the OS).
  • Retention or compliance policy requires live volumes.
  • The workload owner has not signed off. This pattern deletes volumes; it is an operational change, not a billing tweak.

CloudPouch EBS Cost Insights list EBS volumes attached to stopped EC2 instances — including multiple volumes on the same instance — and put a monthly price on them, so you can rank instances by parking value instead of guessing. Run EBS Snapshot Cost Insights afterwards to keep the snapshot side clean: it reports snapshot counts, archiveable volume, and per-volume delete-versus-archive guidance.

The archive tier cuts snapshot storage cost further (a quarter of the standard snapshot rate at the time of the case study: $0.0125 per GB-month), but restores carried a $0.03 per GB fee and archived snapshots billed for a minimum of 90 days. If a parked instance gets restored regularly, archiving its snapshots can cost more than it saves — analyze actual restore frequency first, and never archive snapshots simply because they are old.

Fleet size changes while you work, so track a unit KPI rather than the raw bill. The case-study engagement used average monthly storage cost per EC2 instance, which fell from $14.20 to $5.82 — a 59% drop that stayed provable regardless of what else happened in the account. See How to measure AWS cost optimization results with a KPI.