AWS cost · RDS storage & backups
The RDS costs hiding in storage and backups
Most people size up an RDS bill by the instance - the compute tier is the number everyone looks at. But an RDS database bills three things separately: the instance, the storage, and the backups. The storage is charged on what you provisioned, not what you use, so an over-allocated disk quietly bills full price for empty space. And backups have their own meter that only starts once they grow past your database size - which a long retention window and a pile of old snapshots do faster than you would think. This is the part of the RDS bill nobody reads.
RDS storage is billed on GB provisioned, not used, and most of it is still gp2 when gp3 is ~20% cheaper. Backups are free up to 100% of your database size, then $0.095/GB-month - which long retention and old manual snapshots quietly exceed. Right-size storage to gp3, trim retention, and delete snapshots you do not need.
What actually bills beyond the instance?
Two separate meters - storage and backups - each with its own trap:
| What | Cost | Note |
|---|---|---|
| Provisioned storage | billed on GB provisioned | not on GB used - allocate 500 GB, pay for 500 GB |
| gp2 vs gp3 storage | gp3 ~20% cheaper | same lever as EBS - most RDS disk is still gp2 |
| Backups up to 100% of DB size | $0 | free retention equal to your provisioned storage |
| Backups beyond that | $0.095/GB-month | long retention and manual snapshots stack up |
Why do storage and backups creep up?
Because both grow by default and shrink only on purpose. Storage was provisioned once, generously, and never revisited. Backup retention was left at a comfortable maximum. Manual snapshots were taken before risky changes and never cleaned up. None of it triggers an alert - it just accumulates under two line items most people never open. It is the same storage creep as an S3 bill that only goes up, applied to your database.
How do I find and trim it?
Start by listing each database with its allocated storage and type - gp2 entries are candidates to move to gp3 - then count the manual snapshots piling up under backup storage:
# storage size and type per database (spot gp2 to move to gp3)
aws rds describe-db-instances \
--query 'DBInstances[].{DB:DBInstanceIdentifier,GB:AllocatedStorage,Type:StorageType}' \
--output table
# manual snapshots you are keeping (and paying for beyond the free tier)
aws rds describe-db-snapshots --snapshot-type manual \
--query 'DBSnapshots[].{ID:DBSnapshotIdentifier,GB:AllocatedStorage,Created:SnapshotCreateTime}' \
--output tableThe gp2-to-gp3 move is the same 20% win as on EBS volumes, and it applies to RDS storage in exactly the same way.
Want to know how much of your RDS bill is storage and backups nobody trimmed? Connect your account read-only and see what it is wasting, in real dollars.
The role can only read - Get, Describe, List, nothing else. Read the exact permissions before you deploy it, and delete the stack whenever you want.
Frequently asked questions
How is RDS storage billed?+
On provisioned capacity, not usage - the same as EBS. If you allocate 500 GB, you pay for 500 GB every month whether the database holds 50 GB or 500. Storage is billed separately from the instance-hours, which is why it is easy to overlook.
Can I use gp3 storage on RDS to save money?+
Yes. RDS supports gp3, which is roughly 20% cheaper than gp2 at the same or better performance. Most RDS databases were created on gp2 and never changed. Modifying the storage type to gp3 is the same easy win as it is on EBS volumes.
How much do RDS backups cost?+
Backup storage is free up to 100% of your provisioned database storage in a region. Beyond that - from long retention windows or piles of manual snapshots - AWS charges about $0.095/GB-month. A database with 35-day retention and old manual snapshots can carry far more backup data than the database itself.
Why is my RDS backup storage so large?+
Usually a long automated retention window plus manual snapshots nobody deletes. Automated backups can retain up to 35 days, and every manual snapshot you take is kept until you remove it. Together they can exceed your free allocation and start billing, quietly, under backup storage.
How do I reduce RDS storage and backup costs?+
Switch storage to gp3 for about 20% off, set the automated backup retention to what you actually need rather than the maximum, and delete manual snapshots you no longer require. Avoid over-provisioning storage in the first place, since you pay for what you allocate.
Do I still pay for storage when the RDS instance is stopped?+
Yes. Stopping an RDS instance stops the instance-hour charge but not the provisioned storage or the backups - those keep billing while it is stopped. Scheduling non-production databases off saves the instance cost; the storage and backup charges remain.
Related cost breakdowns
Why Athena is expensive: $5 per TB scanned
Athena charges $5 per terabyte scanned, so an unpartitioned CSV table can cost 10 to 100 times more than the same data as partitioned Parquet. Here is where the scan cost comes from and how to cut it.
Why RDS looks expensive - and how to right-size the instance
A low-traffic MySQL database runs fine on db.t4g.small (~$23/month), not the $100+ tier an AI often quotes. Size RDS to your working set, not your row count.
Your dev and staging RDS databases are billing 24/7
A dev database used 8 hours a day still bills for 24. Scheduling stop/start on non-production RDS saves 50 to 80%. Here is how to stop paying for databases nobody is using at night.
Multi-AZ is doubling your RDS bill - do you need it?
Multi-AZ runs a standby replica around the clock, so it roughly doubles the instance cost. Essential for production, wasteful for dev and staging. Here is how to tell, and how to fix it.