Skip to content

Demystifying Aurora Storage costs - Understanding Aurora Storage Costs in AWS Cost Explorer vs Actual Storage Usage

7 minute read
Content level: Advanced
1

This article shows how to correlate charges in AWS Cost Explorer with actual Aurora Storage usage that is associated with AWS account.

Question : I recently purged a significant amount of data from my Amazon Aurora database (e.g., storage dropped from ~140 TiB to ~70 TiB), but AWS Cost Explorer only shows approximately a 10% reduction in storage costs in its daily view — not the 50% drop I expected. Why doesn't the cost reduction in Cost Explorer match my actual storage reduction?

Explanation:

Aurora storage is not billed based on your point-in-time storage usage. Instead, it is billed using a GB-Month metric — a time-weighted average of storage consumed over the entire billing month.

A GB-Month (gigabyte-month) is a unit of measurement representing 1 GB of data stored for a full month. If your storage fluctuates during the month (data purges, growth, etc.), the charge reflects the weighted average across all days — not the final day's value or the peak.

This is why:

  • A mid-month data purge will NOT immediately halve your bill — you still accumulated storage-hours at the higher level for part of the month.

  • Cost Explorer shows the GB-Month value for the billing period, which may appear disconnected from your current CloudWatch VolumeBytesUsed metric.

HOW GB-Month is calculated

The formula is straightforward:

GB-Month = Σ (Storage_GB on Day_i × 1 day) / Total days in month

Or equivalently:

GB-Month = (Sum of daily storage across all days) / (Number of days in the month)

Example 1: Storage Grows Over the Month

Your Aurora database grows over a 30-day month:

PeriodStorage
Day 1–10100 GB
Day 11–20150 GB
Day 21–30200 GB

GB-Month Calculation:

GB-Month = (100 GB × 10 days + 150 GB × 10 days + 200 GB × 10 days) / 30 days
         = (1,000 + 1,500 + 2,000) / 30
         = 150 GB-Month

Result: Even though you have 200 GB at the end of the month, you are charged for 150 GB-Month — the time-weighted average.


Example 2: Storage Shrinks Over the Month (Data Purge)

Your Aurora database is purged and shrinks over a 30-day month:

PeriodStorage
Day 1–10100 GB
Day 11–2050 GB
Day 21–3030 GB

GB-Month Calculation:

GB-Month = (100 GB × 10 days + 50 GB × 10 days + 30 GB × 10 days) / 30 days
         = (1,000 + 500 + 300) / 30
         = 60 GB-Month

Result: Even though you have only 30 GB at the end of the month, you are charged for 60 GB-Month — because the first 10 days accumulated cost at the higher 100 GB rate.


Example 3: Large-Scale TiB Purge (Real-World Scenario)

You have an Aurora cluster with ~140 TiB of storage. On Day 15 of a 30-day month, you purge approximately 70 TiB of data — dropping storage from 140 TiB to 70 TiB. You expect Cost Explorer to show a ~50% cost reduction, but it only shows ~10%.

PeriodStorage
Day 1–14140 TiB
Day 15–3070 TiB

GB-Month Calculation:

First, convert TiB to GB (1 TiB = 1,024 GB):

  • 140 TiB = 143,360 GB
  • 70 TiB = 71,680 GB
GB-Month = (143,360 GB × 14 days + 71,680 GB × 16 days) / 30 days
         = (2,007,040 + 1,146,880) / 30
         = 3,153,920 / 30
         = 105,130.67 GB-Month

Compare to what a full month at each level would look like:

ScenarioGB-MonthMonthly Cost @ $0.10/GB-Mo
Full month at 140 TiB143,360 GB-Mo$14,336
Full month at 70 TiB71,680 GB-Mo$7,168
Actual (purge on Day 15)105,131 GB-Mo$10,513

What happened:

  • You expected a 50% reduction → $7,168
  • You actually got → $10,513 (a ~27% reduction from the $14,336 baseline)
  • Why? The first 14 days at 140 TiB still contributed heavily to the average. The later you purge in the month, the smaller the benefit for that billing period.

Key takeaway: The cost savings are real — but they are prorated. If storage stays at 70 TiB for the entire next month, you will see the full 50% cost reduction:

Next month GB-Month = 71,680 GB × 30 days / 30 days = 71,680 GB-Month → $7,168

Timing Matters: When You Purge Affects This Month's Bill

For the same 140 TiB → 70 TiB purge, here's how the purge day affects the current month's GB-Month:

Purge DayGB-MonthEffective Reduction
Day 171,68050% (full benefit)
Day 583,57342%
Day 1095,46733%
Day 15105,13127%
Day 20119,46717%
Day 25131,3608%
Day 28138,5813%

Bottom line: If you purge data late in the month, Cost Explorer will show only a marginal improvement for that billing period — but the full savings kick in the following month.


Why Cost Explorer Doesn't Show an Immediate Drop After a Purge

When you delete a large amount of Aurora data (e.g., 50 TiB purged mid-month):

  1. The billing month is not over yet — the high-storage days at the beginning of the month still contribute to the GB-Month average.
  2. Cost Explorer displays GB-Month — it shows the weighted average, not real-time storage.
  3. The reduction IS being factored in — just spread across the full billing period.

Key insight: If your storage drops significantly mid-month, you will see the full cost benefit reflected in the following month (when storage is low for the entire period). The current month will show a partial reduction proportional to how many days remained after the purge.

How to Backtrack / Validate Aurora Storage Costs from Cost Explorer

To reconcile what Cost Explorer shows vs. your actual storage usage:

Step 1: Get daily storage usage from CloudWatch

Use the VolumeBytesUsed metric for your Aurora cluster. Pull daily average values for the billing month.

Step 2: Calculate the expected GB-Month

Expected GB-Month = Sum of (Daily_Storage_GB for each day) / Total days in month

Step 3: Compare to Cost Explorer

In Cost Explorer:

  • Filter: Service = "Amazon Relational Database Service"
  • Usage Type: Filter for your region (e.g., USW2-Aurora:StorageUsage for Aurora Standard, or USW2-Aurora:StorageIOOptimized for I/O Optimized)
  • Group by: Usage Type
  • Metric: Usage Quantity (this shows GB-Month)

The Usage Quantity in Cost Explorer should match your calculated GB-Month from Step 2.

Step 4: Calculate expected cost

Expected Cost = GB-Month × Per-GB-Month rate

Standard Aurora storage rate: $0.10/GB-Month (check your region and pricing tier — if you have a Private Pricing Agreement/PPA, your rate may differ).


Important Notes

  • Aurora I/O Optimized vs. Standard: The storage billing mechanic (GB-Month) is the same for both. The difference is in I/O pricing — I/O Optimized includes I/O costs in the storage rate.
  • Backtrack and clone storage: Aurora Backtrack's storage (for point-in-time recovery window) is billed separately and also uses GB-Month. This is additive to your base storage cost.
  • Private Pricing Agreements (PPA): If your organization has a PPA for Aurora storage, the per-GB-Month rate may differ from published pricing. Factor this into your reconciliation.

Summary

What you seeWhy
Purged 50% of data but cost dropped only ~10% this monthThe GB-Month average includes high-storage days before the purge
Cost Explorer doesn't match CloudWatch VolumeBytesUsedCost Explorer shows GB-Month (average); CloudWatch shows point-in-time
Next month's bill should drop significantlyCorrect — if storage stays low for the full month, GB-Month ≈ actual usage

Related Resources