Amazon Aurora Pricing: The I/O-Optimized Crossover and the Serverless v2 ACU Trap
Quick summary: Aurora bills instance hours plus storage plus I/O — or storage at a 125% premium with I/O bundled (I/O-Optimized). Serverless v2 at $0.12 per ACU-hour wins on variable workloads, loses on steady traffic above 4 ACU. Global Database doubles the price per secondary region plus replicated-write fees. Backtrack adds per-change-record cost most teams never factor in.
Key Takeaways
- Aurora bills instance hours plus storage plus I/O — or storage at a 125% premium with I/O bundled (I/O-Optimized)
- Serverless v2 at $0
- 12 per ACU-hour wins on variable workloads, loses on steady traffic above 4 ACU
- The right shape for a workload depends on traffic pattern, I/O intensity, and consistency requirements; the wrong shape can land the bill 2–5× higher than necessary
- PricingHeroStats stats={[ { value: '$0
Table of Contents
Amazon Aurora is AWS’s flagship cloud-native relational database, available in MySQL and PostgreSQL flavors with several deployment shapes (provisioned, Serverless v2, Global Database, Limitless, DSQL). The pricing reflects that breadth — instance hours, two storage models, optional features each with their own line items, and replication multipliers for multi-region. The right shape for a workload depends on traffic pattern, I/O intensity, and consistency requirements; the wrong shape can land the bill 2–5× higher than necessary.
This post is the bill story. For the broader Aurora-vs-RDS architectural decision, the Aurora Serverless v2 vs provisioned comparison covers the choice within Aurora; the RDS vs Aurora comparison covers when Aurora is the right primitive vs standard RDS.
The Eight Aurora Billing Dimensions
Aurora pricing breakdown — us-east-1, June 2026
Prices in us-east-1
Instance + storage + I/O is the standard model. Serverless v2 collapses these into per-ACU billing; Global Database compounds per region.
| Dimension | Unit price | Example workload | Monthly cost |
|---|---|---|---|
| db.r6g.large (provisioned) 20% premium over standard RDS rate | $0.29 / hour | 1 instance × 730 hours | $212 |
| db.r6g.xlarge (provisioned) Doubles per tier | $0.58 / hour | 1 instance × 730 hours | $423 |
| Serverless v2 Scales by 0.5 ACU increments | $0.12 / ACU-hour | 2 ACU sustained | $175 |
| Standard storage Cheaper for low-I/O workloads | $0.10 / GB-month + $0.20 / M I/O | 500 GB + 50M I/O / mo | $50 + $10 = $60 |
| I/O-Optimized storage Break-even at ~25% I/O share of bill | $0.225 / GB-month, no I/O charge | 500 GB | $112.50 |
| Backup storage (above db size) Free up to size of source database | $0.021 / GB-month | 500 GB backup beyond db size | $10.50 |
| Backtrack (Aurora MySQL) Per change-record stored | $0.012 / M change records | 100M change records / month | $1.20 |
| Aurora Global Database Cross-region transfer $0.02/GB | Each region: full cluster + $0.20/M replicated writes | 2-region setup | 2× cluster cost + transfer |
| Data API Useful for Lambda integration | Free | HTTP query interface | $0 |
| Aurora Limitless (routing + shards) For workloads beyond single-cluster scale | ACU-based | Sharded Aurora PostgreSQL | Varies with shard count |
db.r6g.large (provisioned)
$21220% premium over standard RDS rate
- Unit price
- $0.29 / hour
- Example workload
- 1 instance × 730 hours
db.r6g.xlarge (provisioned)
$423Doubles per tier
- Unit price
- $0.58 / hour
- Example workload
- 1 instance × 730 hours
Serverless v2
$175Scales by 0.5 ACU increments
- Unit price
- $0.12 / ACU-hour
- Example workload
- 2 ACU sustained
Standard storage
$50 + $10 = $60Cheaper for low-I/O workloads
- Unit price
- $0.10 / GB-month + $0.20 / M I/O
- Example workload
- 500 GB + 50M I/O / mo
I/O-Optimized storage
$112.50Break-even at ~25% I/O share of bill
- Unit price
- $0.225 / GB-month, no I/O charge
- Example workload
- 500 GB
Backup storage (above db size)
$10.50Free up to size of source database
- Unit price
- $0.021 / GB-month
- Example workload
- 500 GB backup beyond db size
Backtrack (Aurora MySQL)
$1.20Per change-record stored
- Unit price
- $0.012 / M change records
- Example workload
- 100M change records / month
Aurora Global Database
2× cluster cost + transferCross-region transfer $0.02/GB
- Unit price
- Each region: full cluster + $0.20/M replicated writes
- Example workload
- 2-region setup
Data API
$0Useful for Lambda integration
- Unit price
- Free
- Example workload
- HTTP query interface
Aurora Limitless (routing + shards)
Varies with shard countFor workloads beyond single-cluster scale
- Unit price
- ACU-based
- Example workload
- Sharded Aurora PostgreSQL
Reserved Instance discounts apply to provisioned Aurora instances (40–75% off the on-demand rate depending on term). Serverless v2 has no RI mechanism.
I/O-Optimized vs Standard: The 25% Crossover
Standard Aurora storage bills $0.10/GB-month plus $0.20 per million I/O operations. I/O-Optimized bills $0.225/GB-month with no per-I/O charge — a 125% premium on storage in exchange for unlimited I/O.
The crossover: when I/O costs exceed roughly 25% of your Aurora bill, I/O-Optimized is cheaper.
Standard vs I/O-Optimized — 500 GB database, three I/O profiles
Prices in us-east-1
Same data volume, different I/O rates. The decision is per-cluster, not per-application.
| Dimension | Unit price | Example workload | Monthly cost |
|---|---|---|---|
| Standard, 10M I/O / mo Standard wins for low-I/O | $50 storage + $2 I/O | Read-mostly low-volume | $52 |
| I/O-Optimized, same workload 2× more expensive at low I/O | $112.50 flat | Low-I/O workload | $112.50 |
| Standard, 500M I/O / mo I/O catching up to storage | $50 storage + $100 I/O | Moderate OLTP | $150 |
| I/O-Optimized, same workload I/O-Optimized wins | $112.50 flat | Moderate OLTP | $112.50 |
| Standard, 2B I/O / mo I/O dominates | $50 storage + $400 I/O | High-throughput OLTP | $450 |
| I/O-Optimized, same workload 75% cheaper | $112.50 flat | High-throughput OLTP | $112.50 |
Standard, 10M I/O / mo
$52Standard wins for low-I/O
- Unit price
- $50 storage + $2 I/O
- Example workload
- Read-mostly low-volume
I/O-Optimized, same workload
$112.502× more expensive at low I/O
- Unit price
- $112.50 flat
- Example workload
- Low-I/O workload
Standard, 500M I/O / mo
$150I/O catching up to storage
- Unit price
- $50 storage + $100 I/O
- Example workload
- Moderate OLTP
I/O-Optimized, same workload
$112.50I/O-Optimized wins
- Unit price
- $112.50 flat
- Example workload
- Moderate OLTP
Standard, 2B I/O / mo
$450I/O dominates
- Unit price
- $50 storage + $400 I/O
- Example workload
- High-throughput OLTP
I/O-Optimized, same workload
$112.5075% cheaper
- Unit price
- $112.50 flat
- Example workload
- High-throughput OLTP
The crossover is at roughly 300M I/O / month for a 500 GB database. Beyond that, I/O-Optimized is unconditionally cheaper.
The audit pattern: check CloudWatch VolumeReadIOPs and VolumeWriteIOPs for your Aurora clusters over the last month, sum to get monthly I/O, multiply by $0.20/M to get the Standard-tier I/O bill, compare against the premium of I/O-Optimized. The decision is per-cluster.
Serverless v2 vs Provisioned: The 4-ACU Break-Even
Serverless v2 bills $0.12 per ACU-hour where 1 ACU represents approximately 2 GB of memory and corresponding CPU/network. The pricing scales linearly: 2 ACU = $0.24/hour, 4 ACU = $0.48/hour, 16 ACU = $1.92/hour.
The break-even with provisioned db.r6g.large at $0.29/hour: roughly 2.4 ACU. Above that, Serverless v2 costs more per hour than provisioned for equivalent capacity.
Serverless v2 vs provisioned — usage scenarios
Prices in us-east-1
Serverless v2 wins on variable workloads; provisioned wins on steady traffic above the break-even capacity.
| Dimension | Unit price | Example workload | Monthly cost |
|---|---|---|---|
| Dev / test, scales to 0 nights/weekends Scaling to zero is the killer feature | Serverless v2 avg 0.5 ACU | 40% of hours active | ~$26 |
| Variable production, avg 2 ACU peak 8 ACU Cheaper than always-on db.r6g.xlarge | Serverless v2 avg ~3 ACU | Variable web app load | ~$263 |
| Steady production, sustained 4 ACU Approaching break-even | Serverless v2 | 4 ACU × 730h | $350 |
| Same workload on provisioned 40% cheaper for steady traffic | db.r6g.large | Always-on | $212 |
| Steady production, sustained 8 ACU Significantly more than provisioned | Serverless v2 | 8 ACU × 730h | $700 |
| Same workload on provisioned 40% cheaper for sustained 8 ACU | db.r6g.xlarge | Always-on | $423 |
Dev / test, scales to 0 nights/weekends
~$26Scaling to zero is the killer feature
- Unit price
- Serverless v2 avg 0.5 ACU
- Example workload
- 40% of hours active
Variable production, avg 2 ACU peak 8 ACU
~$263Cheaper than always-on db.r6g.xlarge
- Unit price
- Serverless v2 avg ~3 ACU
- Example workload
- Variable web app load
Steady production, sustained 4 ACU
$350Approaching break-even
- Unit price
- Serverless v2
- Example workload
- 4 ACU × 730h
Same workload on provisioned
$21240% cheaper for steady traffic
- Unit price
- db.r6g.large
- Example workload
- Always-on
Steady production, sustained 8 ACU
$700Significantly more than provisioned
- Unit price
- Serverless v2
- Example workload
- 8 ACU × 730h
Same workload on provisioned
$42340% cheaper for sustained 8 ACU
- Unit price
- db.r6g.xlarge
- Example workload
- Always-on
Scaling to zero on Serverless v2 (supported for dev environments) eliminates the cost when idle — the killer feature for non-production workloads.
Global Database: Each Region Is Full Cost
Aurora Global Database replicates a primary cluster to secondary regions with sub-second replication lag. Each secondary region runs its own Aurora cluster — full instance cost, full storage cost. The primary also pays for replicated writes ($0.20 per million writes replicated) and the inter-region data transfer ($0.02/GB).
A 2-region Global Database with db.r6g.xlarge instances effectively doubles the database tier cost — from $423/month to $850+/month for the instances alone. A 3-region setup roughly triples it.
The right use cases:
- Active-active multi-region writes: applications where users in different regions write locally and replicate globally. (For pure active-active write workloads, evaluate Aurora DSQL which is the newer primitive.)
- Sub-second cross-region read locality: serving users in multiple regions with local-latency reads.
- Low-RPO disaster recovery: cross-region failover with under-1-minute RPO.
The wrong use case: standard DR with relaxed RPO. A single-region cluster with cross-region automated snapshots achieves multi-hour RPO at dramatically lower cost.
Backtrack: The Quiet Per-Change-Record Line
Aurora Backtrack (MySQL only) lets you rewind the cluster to a point within the configured retention window (1–72 hours) without restoring from a backup. The cost: $0.012 per million change records stored.
For low-write databases, this is essentially free. For high-write OLTP databases generating hundreds of millions of change records per day, the line item becomes material — a database with 500M change records/day at 72-hour retention bills ~$13/day, ~$390/month for Backtrack alone.
The mitigations:
- Match retention to operational need. 24-hour retention covers “rewind that bad deploy from this morning”; 72-hour retention is rarely operationally useful.
- Evaluate vs PITR. Point-in-Time Recovery from automated backups is free but slower (full restore from snapshot + log replay). For low-frequency rewind use cases, PITR may suffice.
When to Use Each Aurora Shape
Provisioned for steady production; Serverless v2 for variable / dev; Global Database for multi-region requirements; Limitless for beyond-single-cluster scale.
Use when
- Provisioned Aurora: steady production traffic above ~4 ACU equivalent; predictable load
- Provisioned + Reserved Instances: predictable production for 1+ year of usage — substantial discount
- Serverless v2: variable production traffic with high peak-to-average ratio; dev/test with scale-to-zero
- I/O-Optimized storage: workloads with sustained I/O above ~25% of the bill
- Global Database: multi-region active-active writes, sub-second cross-region read locality, low-RPO DR
- Aurora Limitless: workloads that exceed single-cluster scale and need automatic sharding
- Aurora DSQL: serverless distributed SQL with multi-region active-active for greenfield workloads
Avoid when
- Serverless v2 for steady high-utilization workloads — provisioned is cheaper
- Standard storage on high-I/O workloads — I/O-Optimized saves money
- Global Database for pure read replication — DAX, app-side cache, or read replica is cheaper
- Backtrack on high-write databases without retention discipline — silent line item
- Aurora when standard RDS would suffice — Aurora carries a ~20% instance premium
Aurora is rarely the wrong primitive at the architecture level. The bill problems come from storage class selection, deployment shape, and multi-region overcommit.
A 30-Day Aurora Bill Cleanup Plan
Week 1 — I/O-Optimized evaluation. For each Aurora cluster, calculate the actual I/O volume (CloudWatch VolumeReadIOPs + VolumeWriteIOPs × 30 days). Compare the Standard vs I/O-Optimized cost. Migrate clusters where I/O-Optimized saves money.
Week 2 — Serverless v2 fit audit. Identify clusters on Serverless v2 with sustained ACU consumption above the break-even. Migrate to provisioned. Identify clusters on provisioned with low average utilization — evaluate migration to Serverless v2.
Week 3 — Global Database scope. Review Global Database setups against actual cross-region usage. Where the secondary region is purely DR with relaxed RPO, evaluate replacement with cross-region snapshots.
Week 4 — Backtrack and dev-environment scale-to-zero. Audit Backtrack retention on high-write databases. Configure scale-to-zero on Serverless v2 dev environments to eliminate idle-time cost.
What This Post Doesn’t Cover
- Aurora DSQL pricing in depth — newer serverless distributed SQL primitive with its own pricing model; covered in our database modernization content.
- Aurora performance tuning — relevant to bill (reducing I/O reduces Standard tier cost) but covered in our database operations content.
- Migration from RDS to Aurora — operational migration patterns covered in database migration content.
- Aurora compatibility-mode specifics (MySQL vs PostgreSQL feature differences affecting cost) — covered separately.
If You Only Do One Thing This Week
Calculate I/O volume for your largest Aurora cluster and decide whether I/O-Optimized would be cheaper. Run a CloudWatch query: sum VolumeReadIOPs + VolumeWriteIOPs over 30 days, multiply by $0.20/M. If the result exceeds 25% of your current Aurora bill for that cluster, migrate to I/O-Optimized. The migration is a one-time storage configuration change; the bill drops on day one and the saving compounds indefinitely.
For the broader RDS-vs-Aurora architectural decision, the RDS vs Aurora comparison covers when Aurora’s premium is worth it.
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.