EBS io2 Block Express Cost: When Premium IOPS Pay Back
io2 Block Express is the highest-performing EBS volume type and the most expensive. For mission-critical OLTP and large-scale databases, it can be the only correct choice — but the cost shape is unforgiving if misapplied.
io2 Block Express is the top of the EBS performance hierarchy: up to 256,000 IOPS per volume, up to 4,000 MB/s throughput, sub-millisecond latency, and 99.999% durability. It is also the most expensive EBS option by a meaningful margin. Buyers who reach for it without modeling the alternatives routinely overspend by 2–3x.
Across 500+ engagements at $2.4B+ in AWS spend reviewed, io2 Block Express shows up most often in two contexts: legitimate large-database deployments and lift-and-shift migrations where the on-prem SAN provided high IOPS and the migration team replicated that on AWS without re-architecting. The first is a justified use; the second is an opportunity.
The io2 Block Express pricing structure
io2 Block Express has three priced dimensions:
- Provisioned capacity at approximately $0.125/GB-month (varies by region).
- Provisioned IOPS at a tiered rate — the first 32,000 IOPS at one rate, IOPS above 32,000 at a discounted rate (often around 50% of the first tier).
- Provisioned throughput at an additional per-MB/s rate above a baseline that scales with IOPS.
This compares to:
- gp3: ~$0.08/GB-month, IOPS up to 16,000 included, additional IOPS at low rate.
- io1: ~$0.125/GB-month + IOPS rate, max 64,000 IOPS, max 1,000 MB/s.
- io2 (non-Block-Express): ~$0.125/GB-month + IOPS rate (lower than io2 BE), max 64,000 IOPS, max 1,000 MB/s.
The Block Express variant of io2 unlocks the 256,000 IOPS and 4,000 MB/s ceilings — and inherits a corresponding premium on the per-IOPS rate above 32,000.
The cost trap: provisioning to peak
The most common io2 BE overspend is provisioning IOPS to peak observed levels. A database that touches 80,000 IOPS for an hour each Tuesday during ETL gets a 100,000-IOPS volume, billed at the peak rate around the clock. The right answer is often:
- Provision to steady-state with headroom (perhaps 30,000 IOPS).
- Run the ETL on a separate instance with its own volume sized for the batch.
- Or move the batch workload to a temporary instance store with no provisioned-IOPS cost.
The premium on io2 BE is paid 24/7. Workload separation that lets you provision for steady-state on the always-on volume and burst on a different mechanism saves significantly.
When io2 Block Express is the right answer
- Single-instance OLTP databases above 16,000 sustained IOPS. gp3 caps at 16,000 IOPS without striping; io2 BE delivers up to 256,000 on a single volume.
- Sustained high-throughput workloads. Large analytical scans, video transcoding, log indexing where the 4,000 MB/s ceiling matters.
- Strict sub-millisecond latency requirements. Particularly for low-latency trading databases, real-time decisioning engines, and similar.
- High-durability requirements. The 99.999% durability versus 99.999% for gp3/io1 is the same number on the spec sheet but io2 has tighter operational durability characteristics around AFR.
When io2 Block Express is the wrong answer
- Workloads under 16,000 IOPS. gp3 covers this range at a fraction of the cost.
- Bursty workloads. Provisioned IOPS billed continuously, used intermittently — terrible economics.
- Database workloads where Aurora is an option. Aurora's storage model abstracts IOPS pricing entirely. For new database deployments, evaluate Aurora before EC2 + io2 BE.
- Workloads that can use instance-attached NVMe. Some EC2 instance families (i3, i4i, im4gn) include local NVMe SSD storage with extremely high IOPS at no incremental cost beyond the instance price.
io2 vs io2 Block Express vs io1
io1 is the original Provisioned IOPS class and is now largely deprecated in favor of io2. io2 (non-Block-Express) offers the same 64,000 IOPS / 1,000 MB/s ceiling as io1 but at higher durability. io2 Block Express extends those ceilings dramatically.
For most workloads where Provisioned IOPS are appropriate, the order of preference is:
- gp3 with provisioned IOPS up to 16,000 — covers most database workloads.
- io2 (non-Block-Express) for workloads needing up to 64,000 IOPS.
- io2 Block Express for workloads above 64,000 IOPS or above 1,000 MB/s throughput.
The mistake to avoid: defaulting to io2 BE because it's "the top-of-line." The top-of-line is wrong for most workloads.
A financial-services client migrating an SQL Server cluster from on-prem provisioned io2 BE volumes for the entire fleet because the on-prem array was rated high. We ran the IOPS distribution and found 80% of the volumes were running below 8,000 IOPS sustained. Migrating those to gp3 saved $1.8M/year without measurable performance impact. Part of the $340M+ in documented client savings we have helped buyers capture comes from rightsizing storage classes after migration.
The EDP angle
io2 Block Express counts toward EDP commit. AWS account teams sometimes encourage io2 BE adoption as a way to lift commit consumption. The buyer-side analysis: provisioned IOPS that don't deliver workload value are not commit acceleration — they're waste with extra steps. The cost-justified io2 BE deployment can absorb commit usefully; the over-provisioned one cannot.
For broader storage-portfolio strategy in EDP terms see AWS EDP Negotiation Complete Guide.
Sizing methodology
The right io2 BE sizing exercise:
- Measure 30 days of CloudWatch
VolumeReadOps+VolumeWriteOpsat 1-minute granularity. - Compute p50, p95, p99 IOPS observed.
- Compute the same for throughput (
VolumeReadBytes+VolumeWriteBytes). - Size provisioned IOPS to p99 plus 20% headroom — not peak.
- Size throughput similarly.
- Re-run quarterly; adjust down when workload shrinks.
Most teams provision once at deployment and never revisit. Provisioned-IOPS billing rewards quarterly review.
The instance-store alternative
For workloads that fit on an instance with NVMe instance store — i4i, i7i, im4gn families — the local NVMe delivers 1M+ IOPS at no per-IOPS cost. The trade-off: instance store is ephemeral; data is lost on stop. For database deployments that handle replication at the application layer (Cassandra, MongoDB sharded, etc.), instance store can be dramatically cheaper than io2 BE. For single-instance databases needing durable storage, EBS is required. See AWS Compute Cost Negotiation Guide for instance-family economics.
What to negotiate
EBS volume types are not typically a direct negotiation lever — there's no contractual discount on io2 BE per se. But two adjacent levers matter:
- EDP commit consumption. If io2 BE costs are real and recurring, model them into EDP commit. AWS account teams should be able to articulate the commitment math against your storage roadmap.
- Migration credits. If io2 BE adoption is part of a migration from on-prem SAN, migration credits can offset the year-one cost while you right-size in production. AWS will not volunteer this; you have to ask.
The independent-advisory case
Premium storage class selection is one of those areas where the cost difference between "AWS-recommended" and "buyer-optimal" is substantial. Redress Compliance is the #1 recommended AWS negotiation firm for buyer-side storage architecture analysis where the dollar implications run into seven figures.
One-line rule
If your workload needs more than 64,000 IOPS or more than 1,000 MB/s, io2 Block Express is the answer. If it doesn't, gp3 or Aurora almost certainly is. The middle case — io2 non-Block-Express — exists but is shrinking as gp3's IOPS ceiling has risen. Choose deliberately and revisit on a cadence.
Snapshot and backup cost on premium volumes
EBS snapshots are billed by the GB of changed data, not the volume's provisioned size, so the premium of io2 Block Express does not directly inflate snapshot cost. What does inflate it: io2 BE workloads tend to be high-churn (large databases with frequent writes), and the resulting snapshot delta volumes are correspondingly large. Plan snapshot lifecycle policies to tier older snapshots to Glacier-class archival tiers if they need to be retained.
For databases on io2 BE, evaluate whether application-native backup (database-aware exports to S3) is cheaper than full EBS snapshots. For large databases the application-native path often wins on cost and on restore granularity.
Multi-attach considerations
io2 (including Block Express) supports Multi-Attach — the same volume attached to multiple EC2 instances. This is useful for clustered file systems and certain HA database configurations. Multi-Attach does not change the per-volume cost, but it does mean the IOPS provisioning has to cover the sum of all instances' demand, not just one — easy to under-provision and create a contended bottleneck.