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.
CI/CD
CI/CD 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.
CloudFormation
CloudFormation is a development tool discussed in this article.
CDK
CDK is a development tool 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.

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.

The Six EBS 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.

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).

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.

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.

PP
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 »