Skip to main content

AI & assistant-friendly summary

This section provides structured content for AI assistants and search engines. You can cite or summarize it when referencing this page.

Summary

import PricingHeroStats from '~/components/blog/PricingHeroStats. astro'; import PricingDimensionTable from '~/components/blog/PricingDimensionTable. astro'; import BillSurpriseCallout from '~/components/blog/BillSurpriseCallout

Key Facts

  • •EBS is billed across six dimensions — gp3 storage at $0
  • •08/GB-month, separate IOPS and throughput line items, io2 Block Express, snapshots at $0
  • •05/GB-month, fast snapshot restore at $0
  • •75/DSU-hour
  • •Deleting an EC2 instance never stops the volume bill, and the gp2→gp3 migration is one of the cleanest 20% wins in cloud cost

Entity Definitions

Lambda
Lambda is an AWS service discussed in this article.
EC2
EC2 is an AWS service discussed in this article.
S3
S3 is an AWS service discussed in this article.
CloudWatch
CloudWatch is an AWS service discussed in this article.
CI/CD
CI/CD is a cloud computing concept discussed in this article.
cost optimization
cost optimization is a cloud computing concept discussed in this article.
compliance
compliance is a cloud computing concept discussed in this article.
HIPAA
HIPAA is a cloud computing concept discussed in this article.

Amazon EBS Pricing: Why Deleted EC2 Instances Never Stop the Volume Bill

Quick summary: EBS is billed across six dimensions — gp3 storage at $0.08/GB-month, separate IOPS and throughput line items, io2 Block Express, snapshots at $0.05/GB-month, fast snapshot restore at $0.75/DSU-hour. Deleting an EC2 instance never stops the volume bill, and the gp2→gp3 migration is one of the cleanest 20% wins in cloud cost.

Key Takeaways

  • EBS is billed across six dimensions — gp3 storage at $0
  • 08/GB-month, separate IOPS and throughput line items, io2 Block Express, snapshots at $0
  • 05/GB-month, fast snapshot restore at $0
  • 75/DSU-hour
  • Deleting an EC2 instance never stops the volume bill, and the gp2→gp3 migration is one of the cleanest 20% wins in cloud cost
Amazon EBS Pricing: Why Deleted EC2 Instances Never Stop the Volume Bill
Table of Contents

Amazon EBS is one of those AWS services with a quietly expensive bill. The per-GB rate looks innocuous — $0.08/GB-month for gp3 storage in us-east-1, as of June 2026 — yet on mature accounts EBS regularly lands in the top three highest-spend services, often outranking the EC2 instances it is attached to. The reason is structural: EBS bills across six independent dimensions, snapshot storage compounds without supervision, and the lifecycle relationship between an EC2 instance and its volumes is the opposite of what most engineers assume.

Amazon EBS pricing bills storage, provisioned IOPS/throughput, snapshots, and Fast Snapshot Restore independently. In us-east-1 (June 2026), gp3 storage is $0.08/GB-month and standard snapshots are $0.05/GB-month. Most surprises come from detached volumes and snapshot chains that outlive the EC2 instances that created them.

Volume typeus-east-1 storageBest for
gp3$0.08/GB-monthDefault general-purpose
gp2 (legacy)$0.10/GB-monthMigrate to gp3
io2 Block Express$0.125/GB-month + IOPS tiersSub-ms latency SLOs
Snapshots (standard)$0.05/GB-monthIncremental backup chains

The post you are reading is the bill story. For the encryption and snapshot-hygiene operational angle, our EBS encryption and snapshot lifecycle guide covers KMS configuration and DLM policies; for IOPS-sensitive workload economics, run the numbers in our EBS IOPS cost calculator.

How Does Amazon EBS Pricing Work? Six Billing Dimensions

EBS pricing breakdown — us-east-1, June 2026

Prices in us-east-1

Each line is metered independently. The gp3 storage rate is the obvious number; the other five regularly contribute more to the bill on real workloads.

gp3 storage

$40.00

Default for most new workloads

Unit price
$0.08 / GB-month
Example workload
500 GB application volume

gp3 IOPS (above 3000)

+$15.00

3000 IOPS included free regardless of volume size

Unit price
$0.005 / IOPS-month
Example workload
500 GB with 6000 IOPS provisioned

gp3 throughput (above 125 MBps)

+$5.00

125 MBps included free

Unit price
$0.04 / MBps-month
Example workload
500 GB with 250 MBps provisioned

io2 Block Express storage

$62.50

56% more than gp3; use only when sub-ms IOPS matters

Unit price
$0.125 / GB-month
Example workload
OLTP database, 500 GB

io2 Block Express IOPS

+$1,800+

IOPS often outweigh storage on high-perf workloads

Unit price
Tiered: $0.065 → $0.038 → $0.027 / IOPS-month
Example workload
32,000 IOPS provisioned

st1 (throughput-optimized HDD)

$184.32

For sequential workloads; 1 TB minimum size

Unit price
$0.045 / GB-month
Example workload
Big-data warm storage, 4 TB

sc1 (cold HDD)

$61.44

Cheapest block storage; 1 TB minimum

Unit price
$0.015 / GB-month
Example workload
Infrequent-access archive, 4 TB

Snapshots — standard

See note

Incremental — bill is on actual changed blocks, not full size × count

Unit price
$0.05 / GB-month
Example workload
35 daily snapshots × 500 GB volume

Snapshots — archive tier

75% off standard

24–72h restore + per-GB restore fee

Unit price
$0.0125 / GB-month
Example workload
7-year compliance retention

Fast Snapshot Restore (FSR)

$1,620

Enable per-snapshot per-AZ; forget to disable, pay forever

Unit price
$0.75 / DSU-hour
Example workload
1 snapshot enabled in 3 AZs

Prices vary by region. EBS is generally cheapest in us-east-1 and us-west-2; some regions can be 25–30% higher for identical volumes.

If you only audit one dimension first, start with detached gp3 volumes — they bill indefinitely after instance termination.

Why Deleting an EC2 Instance Never Stops the Volume Bill

The single most expensive EBS misconception: that terminating an EC2 instance terminates its volumes. It doesn’t. EBS volumes are independent resources. When you terminate an instance, the attached volume is detached, not deleted — unless DeleteOnTermination=true was set on the volume’s block device mapping at instance-launch time, which it is for the root volume by default but rarely for additional data volumes.

The waste pattern follows from this. A developer launches a dev instance with a 100 GB data volume. The instance gets terminated when the project pauses. The volume remains, detached, billing at $8/month. Multiply by months of accumulation and across dozens of dev environments and the bill quietly climbs.

The Snapshot Bill Compounds Without Supervision

Snapshots are incremental — the bill is on the actual changed blocks across the chain, not on full volume size times snapshot count. That makes the per-snapshot math intuitive (a daily snapshot of a low-churn volume adds maybe 5–10% to the snapshot footprint per day, not 100%). It also makes the cumulative bill misleading because there is no single line item that says “you have 14,000 snapshots.”

Three multipliers drive the snapshot bill out of proportion:

  1. AMI snapshots from baked images. Every AMI is backed by snapshots. Build a new AMI weekly in a CI/CD pipeline and never deregister the old ones, and 18 months later the snapshot count is in four digits.
  2. AWS Backup plans with long retention. A daily backup plan with 35-day retention multiplies the snapshot count per volume by 35×. Apply this across 200 volumes and you have 7,000 snapshots in steady state.
  3. DLM lifecycle policies created and forgotten. Data Lifecycle Manager policies are easy to enable and easy to leave running with no archive transition or expiry, especially when the team that created them rotates off the account.

The gp2 → gp3 Migration Is the Cleanest 20% Win in Storage

gp3 is unconditionally cheaper than gp2 for most volume shapes. Storage is 20% cheaper ($0.08 vs $0.10 per GB-month) and gp3 includes 3000 IOPS in the base price regardless of volume size, while gp2 bundles IOPS at 3 IOPS per GB. The crossover happens at 1 TB — a 1 TB gp2 volume includes 3000 IOPS by default; a 4 TB gp2 includes 12,000 IOPS. Above 1 TB with high IOPS needs, you have to add gp3 IOPS line items to match.

Run the math for a typical fleet:

gp2 vs gp3 — common volume shapes (us-east-1, June 2026)

Prices in us-east-1

gp3 wins on cost in every common shape under 1 TB. Above 1 TB, you must check the IOPS requirement before migrating.

100 GB / 3000 IOPS

gp3: $8.00 / mo

20% saving — pure win

Unit price
gp2: $10.00 / mo
Example workload
Standard dev volume

500 GB / 3000 IOPS

gp3: $40.00 / mo

20% saving

Unit price
gp2: $50.00 / mo
Example workload
Application data

1 TB / 3000 IOPS

gp3: $80.00 / mo

20% saving — still favors gp3

Unit price
gp2: $100.00 / mo
Example workload
Crossover point

2 TB / 6000 IOPS

gp3: $160 + $15 IOPS = $175

12.5% saving

Unit price
gp2: $200.00 / mo
Example workload
High-IOPS app on gp2

4 TB / 12000 IOPS

gp3: $320 + $45 IOPS = $365

8.75% saving

Unit price
gp2: $400.00 / mo
Example workload
Saturated gp2 by size

Migration is in-place via ModifyVolume — no downtime, no data movement. Worth automating across the fleet.

The migration mechanism is the AWS-native ModifyVolume API or the modify-volume CLI command. It is in-place, online, and free. The bottleneck is process — change-management approval on production volumes — not technology. For the migration script and a fleet-wide audit pattern, see our EBS encryption and snapshot lifecycle guide.

io2 Block Express: Use Only When Sub-Millisecond IOPS Genuinely Matters

io2 Block Express is the high-performance tier — sub-millisecond latency, up to 256K IOPS per volume, durability quoted at 99.999%. The price reflects that. Storage is 56% more expensive than gp3 ($0.125 vs $0.08 per GB-month) and IOPS are billed at a substantially higher rate on a tiered curve ($0.065/IOPS-month for the first 32K, dropping to $0.038 and then $0.027 in higher tiers).

The legitimate use cases are narrow: OLTP databases with strict latency SLAs, mission-critical SAP HANA workloads, regulated financial systems where sub-ms IOPS variance affects trade execution. Everything else — including most “high-performance” application volumes — should be on gp3 with appropriate IOPS provisioned, which is dramatically cheaper for the same IOPS count.

Fast Snapshot Restore: The Most Expensive Forgotten Feature

Fast Snapshot Restore (FSR) initializes a snapshot in an AZ so the first reads from a restored volume hit warm blocks rather than lazy-loading from S3. The benefit is real for fleet launches where the first-read latency would otherwise impact application warm-up. The price is $0.75 per DSU-hour per snapshot per AZ — about $540/month per snapshot per AZ, or $1,620/month if enabled across three AZs.

The waste pattern: enable FSR on a base AMI snapshot during DR planning, run a single drill, and forget to disable it. Twelve months later that AMI snapshot has cost $19,440. Find every FSR-enabled snapshot with aws ec2 describe-fast-snapshot-restores --filters Name=state,Values=enabled and disable any that are not actively being used to launch fleets.

Snapshot Archive: The Compliance Tier

Snapshot Archive is a 75%-discount tier for snapshots accessed less than once a year. The catch is a 24–72 hour restore time and a per-GB restore fee. The right use case is regulatory retention — financial 7-year holds, HIPAA imaging archives, contract-record compliance — where the snapshot must exist but realistically will never be restored.

The wrong use case is operational backup. If your DR plan requires a restore SLO of even a few hours, Archive is too slow. Keep operational snapshots on the standard tier and apply Archive only to the explicitly-classified retain-but-never-restore set.

When to Use Each EBS Volume Type

gp3 is the default; io2 Block Express is for documented latency SLOs; st1/sc1 are for sequential or cold workloads.

Use when

  • gp3 for almost everything: web apps, databases under 1 TB, dev/test, general-purpose application volumes
  • io2 Block Express for OLTP databases with sub-millisecond latency SLOs and documented IOPS requirements above 16K
  • st1 for warm big-data: Hadoop/Spark scratch, log processing, data warehouse staging where reads are sequential
  • sc1 for infrequent-access archives where block-storage is required but access is rare
  • gp3 with provisioned IOPS for workloads that need 4–16K IOPS — still beats io2 on price

Avoid when

  • io2 Block Express as a default for "production" volumes — most do not need it and the premium is 56%+
  • gp2 for any new workload — gp3 is unconditionally better for under-1-TB volumes
  • st1/sc1 for random-IOPS workloads — HDD-backed, performance falls off a cliff under random access
  • Multi-attach io2 when EFS or FSx could serve the shared-storage use case at a fraction of the IOPS cost
  • Fast Snapshot Restore on snapshots that are not being used for active fleet launches

Migrate gp2 → gp3 in-place via ModifyVolume; it is online and free. Audit io2 usage quarterly to catch defaults-without-justification.

A 30-Day EBS Cost Cleanup Plan

A focused four-week cleanup typically recovers 15–30% of the EBS line on accounts that have not done one in 12+ months.

Week 1 — Find orphans. Run AWS Compute Optimizer for EBS, Trusted Advisor’s underutilized-volume check, and Storage Lens for EBS. Build a single list of detached volumes and zero-IOPS volumes with their owners (using cost-allocation tags).

New — June 18, 2026: Compute Optimizer’s EBS recommendations now factor IOPS- and throughput-exceeded signals (free CloudWatch metrics, Nitro-based instances only), so Week 1 surfaces both idle volumes and volumes silently throttled by under-provisioned IOPS/throughput — the two cost-and-performance failure modes in one pass.

Week 2 — Snapshot lifecycle. Audit AWS Backup plans for retention beyond business need. Audit DLM policies for missing archive transitions and expiries. Run the AMI orphan-snapshot query to find snapshots whose AMIs are deregistered. Apply a default 90-day retention policy where none exists.

Week 3 — gp2 → gp3 migration. Identify every gp2 volume in the fleet. Group by application owner and run the IOPS math. For volumes under 1 TB, schedule the in-place migration; for volumes above 1 TB, validate IOPS requirements first.

Week 4 — io2 and FSR review. Audit every io2 volume against a “documented latency SLO” criterion; downgrade to gp3 with provisioned IOPS where the SLO does not require sub-ms. Audit every Fast Snapshot Restore-enabled snapshot; disable any not actively used for fleet launches.

Cross-reference the numbers with our EBS IOPS cost calculator when scoping the gp3 IOPS provisioning for migrations.

More in This Series

Part of the AWS Service Pricing series (June 2026).

What This Post Doesn’t Cover

  • Cross-region snapshot replication pricing — adds inter-region data transfer plus the destination-region storage rate; treat as a separate budget line.
  • EBS-optimized EC2 instance types — the EBS-optimized network throughput is included in the instance price, not the EBS price; covered on the EC2 side.
  • Backup vault costs vs raw snapshot costs — AWS Backup adds a small management overhead per recovery point; covered in a future post.
  • NVMe instance store cost — instance store is included in EC2 instance pricing and has zero EBS bill, but loses data on instance stop/terminate. Different tradeoff entirely.

If You Only Do One Thing This Week

Set DeleteOnTermination=true on every non-root volume in your launch templates and CloudFormation/CDK templates, and add a “find detached volumes” job to your weekly cost-review. The two changes together prevent the single most common EBS waste pattern — volumes outliving the instance that needed them — and surface the orphans that have already accumulated. Pair with a DLM lifecycle policy that enforces a default 90-day snapshot retention and the EBS line will trend down month over month even without further intervention.

For workloads where IOPS economics matter, validate the gp3 sizing in our IOPS cost calculator before committing to migration.

Frequently asked questions

Why does my EBS bill keep going when the EC2 instance is gone?
Because EBS volumes are independent resources. When you terminate an EC2 instance, the attached EBS volume is detached but not deleted unless DeleteOnTermination=true was set at attach time. The volume continues to bill at the per-GB-month rate (gp3 is $0.08/GB-month in us-east-1) until it is explicitly deleted. Snapshots of that volume continue to bill separately at $0.05/GB-month for the standard tier even after the volume itself is gone. The most common waste pattern: developers terminate dev instances expecting the volume to go with them; weeks later a 24-month cost report reveals dozens of orphaned 100 GB volumes at $8/month each.
Is gp3 always cheaper than gp2?
For storage alone, yes — $0.08/GB-month vs $0.10/GB-month, a flat 20% saving. The nuance is that gp3 bills IOPS and throughput as separate line items above the included baseline (3000 IOPS and 125 MBps). If your gp2 volume is 1 TB or larger, gp2 includes more than 3000 IOPS in the bundled price (gp2 IOPS scale with volume size at 3 IOPS/GB), so gp3 only beats gp2 when you migrate to a smaller volume size with matched IOPS. For volumes under ~700 GB with normal IOPS needs, gp3 is always cheaper. Above that, run the IOPS math.
What is fast snapshot restore and why is it so expensive?
Fast Snapshot Restore (FSR) is an opt-in feature that makes a snapshot fully initialized at attach time so the first reads do not hit the lazy-loading penalty. It costs $0.75 per DSU-hour per snapshot per AZ — $540/month per snapshot per AZ. Many teams enable FSR on a base AMI snapshot for disaster recovery purposes and forget about it. A single AMI snapshot enabled in three AZs costs $1,620/month with zero benefit until a DR event. Disable FSR on any snapshot that is not actively being used to launch fleets; the lazy-loading penalty only matters when you need warm-start performance on the first read.
Are snapshots really 50% of the EBS bill on mature accounts?
Often more. Snapshots accumulate from AMI builds, AWS Backup plans, manual point-in-time snapshots, and DLM lifecycle policies. Without explicit retention enforcement, a workload with a daily AWS Backup plan that keeps snapshots for 35 days will hold roughly 35 incremental snapshots per volume in perpetuity. On accounts with hundreds of volumes, snapshot storage commonly exceeds active volume storage by 2–3×. Recovery Point Lifecycle in AWS Backup and DLM age-out policies are the primary mitigations; both are free to configure and dramatically cut the bill.
What is the snapshot archive tier and when does it pay off?
Snapshot Archive is a low-cost storage tier at $0.0125/GB-month — 75% cheaper than the standard $0.05/GB-month — for snapshots accessed less than once a year. The catch: archived snapshots take 24–72 hours to restore and incur a per-GB restore fee. Archive is the right tier for compliance-mandated retention (7-year tax records, HIPAA-required imaging) where you must keep the snapshot but realistically will never restore it. It is the wrong tier for operational backups where a restore SLO of even a few hours matters.
How do I find orphaned EBS volumes without writing a script?
AWS Compute Optimizer for EBS surfaces underutilized and idle volumes from CloudWatch metrics — zero IOPS and zero throughput over a 14-day lookback is the signal. As of June 18, 2026, Compute Optimizer also factors the VolumeIOPSExceededCheck and VolumeThroughputExceededCheck metrics, so its rightsizing recommendations now catch the opposite problem too — volumes silently throttled because IOPS or throughput is under-provisioned for bursty workloads (Nitro-based instances only; excludes standard and Multi-Attach volumes). AWS Trusted Advisor has a dedicated underutilized EBS volumes check on Business support and above. Storage Lens for EBS (now in the S3 Storage Lens console) shows aggregate utilization at account and OU level. Between the three, the orphan-detection workflow takes minutes; the harder part is establishing a deletion process that requires snapshot creation before delete and an owner sign-off for production volumes.
Is multi-attach worth the price?
Multi-attach is a feature on io1 and io2 that lets up to 16 EC2 instances attach the same volume concurrently — useful for shared-disk clustered applications (Oracle RAC, SAP HANA shared-disk patterns). It does not change the per-GB or per-IOPS price; it does require io1/io2, which are 56–67% more expensive than gp3 storage and bill IOPS at a much higher rate. Multi-attach is worth it for the narrow set of workloads that genuinely need shared block storage and cannot be re-architected onto EFS or FSx. Anything that can use a file-system-based shared store should not be paying io2 prices.
Palaniappan P
Palaniappan P

AWS Cloud Architect & AI Expert

AWS-certified cloud architect and AI expert with deep expertise in cloud migrations, cost optimization, and generative AI on AWS.

AWS ArchitectureCloud MigrationGenAI on AWSCost OptimizationDevOps

Recommended Reading

Explore All Articles »