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, so allocating 500 GB for 50 GB of data costs you the difference every month. 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, 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 | same price per GiB | unlike EBS - gp3 buys performance here, not a discount |
| 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.
The manual snapshots are the half with no expiry at all, and they outlive the databases they came from. Manual RDS snapshots never expire covers the free allowance that decides whether yours cost anything.
How do I find and trim it?
Start by listing each database with its allocated storage and type, then count the manual snapshots piling up under backup storage:
# storage size and type per database
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 tableDo not expect the gp2-to-gp3 move to repeat the 20% win it gives on EBS volumes. RDS prices both at the same rate per GiB. It is still worth doing below 1,000 GiB, because gp3 gives a 3,000 IOPS baseline where gp2 gives 3 per GiB - but as a free upgrade, not a saving.
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 every permission it asks for before you connect, and delete the stack whenever you want. The scan adds about $0.10 to your own bill.
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?
+
Not on the storage rate - RDS charges the same per GiB for gp2 and gp3, unlike EBS where gp3 is about 20% cheaper. What gp3 buys on RDS is performance: a baseline of 3,000 IOPS and 125 MiB/s at any size, where gp2 gives 3 IOPS per GiB and only bursts to 3,000. Below 1,000 GiB that is a free upgrade, and it can save money indirectly if you allocated extra storage purely to get IOPS.
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?
+
Set the automated backup retention to what you actually need rather than the maximum, delete manual snapshots you no longer require, and avoid over-provisioning storage in the first place, since you pay for what you allocate. Switching gp2 to gp3 does not cut the rate on RDS - it is a free performance upgrade, not a discount.
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.