RDS pricing is a price per instance-hour by instance class, engine and deployment, per GB-month of provisioned storage with provisioned IOPS and throughput, per GB-month of backups above the free allowance, plus a price per vCPU-hour for extended support of old engine versions and for RDS Proxy; Aurora replaces provisioned storage with a cluster volume that grows, per GB-month plus I/O per million or with the I/O-Optimized surcharge, and Serverless v2 replaces the instance-hour with ACU-hours. On the bill the instance hours almost always dominate, doubled by Multi-AZ; the second largest line is storage on RDS and, on Aurora Standard, often the I/O.
Pricing dimensions
An RDS database is an EC2 instance with attached storage, which AWS prices as a whole but bills on separate lines: the instance class carries the engine and the licence, the storage comes with dimensions of its own, and every option from Multi-AZ to the proxy is its own usage type.
| Dimension | Unit | What drives it | Optional |
|---|---|---|---|
| Instance hour | Second per instance class, engine and deployment, 10 minutes minimum after every change | Class (db.t4g to db.r7g), engine (MySQL, PostgreSQL, MariaDB, SQL Server, Oracle, Db2), Single-AZ or Multi-AZ | No; ends with stop or delete, and a stopped instance restarts by itself after seven days |
| Multi-AZ | Factor two on instance and storage with one standby; three instances for a Multi-AZ DB cluster with two readable standbys | Every deployment with a standby | Yes |
| Licence | Inside the class's hourly price (licence included) or brought along (BYOL) | SQL Server and Oracle; the edition sets the price | Yes on Oracle, no on SQL Server |
| Storage | GB-month per type (gp3, gp2, io1, io2 Block Express), provisioned, not used | The size created; Multi-AZ doubles it | No |
| Provisioned IOPS and throughput | IOPS-month and MB/s-month | gp3 above the baseline of 3,000 IOPS and 125 MiB/s (12,000 IOPS and 500 MiB/s above a size threshold per engine); io1 and io2 every IOPS | Yes on gp3, no on io1 and io2 |
| Backups | GB-month above 100 percent of the provisioned storage per region | Retention period, manual snapshots, snapshots of deleted instances, copies to other regions | Yes above the allowance |
| Extended support | vCPU-hour, dearer from the third year | Every instance on an engine version past the end of standard support, automatically | Yes, through an upgrade |
| RDS Proxy | vCPU-hour of the instance behind it, two vCPU minimum; ACU-hour on Serverless v2 | Every instance with the proxy enabled | Yes |
| Aurora storage | GB-month of the grown cluster volume, plus I/O per million (Standard) or a higher GB price and 30 percent on the instance with no I/O lines (I/O-Optimized) | The cluster's data volume and its reads and writes | No |
| Aurora Serverless v2 | ACU-hour per second, 0.5 ACU steps, minimum 0 ACU with automatic pause | The capacity the cluster actually holds between minimum and maximum | Yes, instead of provisioned instances |
| Further Aurora items | GB-month for backups above the cluster volume; replicated write I/O per million for Global Database; GB for snapshot export; CPU credits per vCPU-hour on T classes | Global replication, exports to S3, burstable instances | Yes |
| Purchase option | Reserved Instance instead of the list price, on the instance hour | One- or three-year term per class, engine and region | Yes (Reserved Instances, reserved capacity for managed services) |
The instance hour is counted per second according to the pricing page, with a minimum of ten minutes after every billable change such as creating, starting or changing the class, from launch until stop or delete. The class follows the EC2 families with the prefix db, and the engine sits in the price: the same db.r7g.large costs the same with MySQL and PostgreSQL and about a seventh more with Aurora, and a db.m6i.large costs about five times the MySQL price with SQL Server Standard licence included, because the licence sits in the hourly price. Multi-AZ with one standby doubles the instance hour and the storage, because the standby is a full copy that serves no reads; a Multi-AZ DB cluster with two readable standbys charges three instances and makes both standbys usable for reads.
Storage on RDS is provisioned as on EBS: gp3 includes 3,000 IOPS and 125 MiB/s and, above a size threshold per engine at which RDS stripes the volume across several disks, 12,000 IOPS and 500 MiB/s; beyond that, IOPS and throughput cost separately, and io1 and io2 Block Express charge every provisioned IOPS. Backups are free up to the provisioned storage per region, charged per GB-month beyond it, and snapshots of deleted instances count without an allowance. Extended support has been charged automatically since 2024-03-01 as soon as an instance runs an engine version whose standard support has ended, per vCPU-hour in the first two years and at twice the rate in the third; on Aurora Serverless per ACU-hour.
Aurora keeps the data in a cluster volume that grows with the data and is charged per GB-month of its actual size, not a provisioned size. In the Aurora Standard configuration the read and write I/O come on top per million; in Aurora I/O-Optimized the I/O lines disappear, but the storage costs more per GB and every instance 30 percent more. AWS names I/O-Optimized as the fit once I/O exceeds a quarter of the Aurora cost; switching back is possible at any time, switching to it once every 30 days. Serverless v2 measures capacity in Aurora Capacity Units of about 2 GiB of memory each, charged per second in 0.5 ACU steps between the configured minimum and maximum, and pauses at a minimum of 0 ACU after idle time until the next connection arrives.
How it appears in your billing data
In the Cost and Usage Report the lines carry the product code AmazonRDS, Aurora included, and lineItem/ResourceId the ARN of the instance or cluster. The instance hour appears as EUC1-InstanceUsage:db.m7g.large for Single-AZ and EUC1-Multi-AZUsage:db.m7g.large for Multi-AZ, the prefix being the region code, EUC1 for Frankfurt; the engine sits not in the usage type but in lineItem/Operation as CreateDBInstance with a suffix per engine, such as CreateDBInstance:0002 for MySQL, CreateDBInstance:0014 for PostgreSQL, CreateDBInstance:0016 for Aurora MySQL and CreateDBInstance:0021 for Aurora PostgreSQL, and in plain words in product/databaseEngine with product/deploymentOption and product/licenseModel. Aurora I/O-Optimized instances carry EUC1-InstanceUsageIOOptimized:db.r7g.large, Serverless v2 EUC1-Aurora:ServerlessV2Usage in ACU-hours and EUC1-Aurora:ServerlessV2IOOptimizedUsage for I/O-Optimized.
Storage appears as EUC1-RDS:GP3-Storage and EUC1-RDS:Multi-AZ-GP3-Storage in GB-months, performance as EUC1-RDS:GP3-PIOPS, EUC1-RDS:GP3-Throughput, EUC1-RDS:PIOPS for io1, EUC1-RDS:IO2-PIOPS and EUC1-RDS:PIOPS-Storage for the storage beneath, each with Multi-AZ- in the name for the doubled variant. Backups above the allowance appear as EUC1-RDS:ChargedBackupUsage, extended support as EUC1-ExtendedSupport:Yr1-Yr2:PostgreSQL13 or EUC1-ExtendedSupport:Yr3:PostgreSQL13 in vCPU-hours, the proxy as EUC1-RDS:ProxyUsage in vCPU-hours and EUC1-RDS:Proxy-ASv2-Usage in ACU-hours, snapshot export as EUC1-RDS:SnapshotExportToS3 per GB. Aurora carries EUC1-Aurora:StorageUsage and EUC1-Aurora:IO-OptimizedStorageUsage per GB-month, EUC1-Aurora:StorageIOUsage per I/O, EUC1-Aurora:BackupUsage per GB-month and EUC1-Aurora:ReplicatedWriteIO for Global Database.
What the report does not deliver is storage per database inside an Aurora cluster and I/O per query; only CloudWatch shows both, with VolumeBytesUsed, VolumeReadIOPs and VolumeWriteIOPs. The report's structure is described in the AWS Cost and Usage Report. In the FOCUS export, ServiceName carries Amazon Relational Database Service and x_ServiceCode AmazonRDS; instance, storage and I/O lines are ChargeCategory Usage, hours under a Reserved Instance PricingCategory Committed, and the fees of the Reserved Instances ChargeCategory Purchase (FOCUS columns).
Levers
Configuration: Multi-AZ is the largest lever, because it doubles instance and storage; it belongs in production and rarely in development, test and staging. The class is the second: Graviton classes (db.m7g, db.r7g) sit below the Intel classes of the same size, and db.t4g covers small databases as long as the CPU credits last; the method is in database optimisation and rightsizing. Stopping pauses the instance hour for up to seven days while the storage keeps running. On Aurora, the comparison of the I/O line with the rest of the Aurora cost decides between Standard and I/O-Optimized, and the choice between provisioned instances and Serverless v2 depends on whether the load varies by day or rests at night.
Purchase option: for a steady baseline, Reserved Instances lower the instance hour per class, engine and region, with size flexibility within the family and, on Aurora, across Standard and I/O-Optimized; they never cover storage, I/O or backups. Which form fits is the subject of commitment strategy; Savings Plans do not apply to RDS.
Architecture: read replicas cost a full instance and are needed only where the read load exceeds the writer; a Multi-AZ DB cluster delivers two readable standbys for the price of three instances. Versions near the end of standard support are upgraded before the cut-off date, because extended support per vCPU-hour costs more than any class; databases needed only occasionally run as Serverless v2 with a minimum of 0 ACU. The dimensions across all three providers are set side by side in managed databases.
Where it goes wrong
- The bill doubles with one tick box. Multi-AZ in a test environment doubles instance and storage. Lines with
Multi-AZUsageandMulti-AZ-GP3-Storagein accounts without production are the clue. - Extended support appears without a decision. An instance on PostgreSQL 13 or MySQL 5.7 has paid per vCPU-hour since the end of standard support, automatically. Lines with
ExtendedSupport:in the usage type list the affected instances; the upgrade ends them. - Backups cost although nothing was configured. Manual snapshots of deleted instances stay behind without an allowance.
ChargedBackupUsageshows the volume; snapshots without an instance are deleted or exported to S3. - Aurora I/O exceeds the instances. A cluster under Aurora Standard with analytics or batch load pays I/O per million. Once
Aurora:StorageIOUsageexceeds a quarter of the Aurora cost, I/O-Optimized is cheaper. - Serverless v2 does not sleep. A cluster with a minimum above 0 ACU, or with a connection that keeps it awake, pays the minimum around the clock.
ServerlessV2Usageat the minimum overnight shows what the pause would have saved. - The stopped instance runs again. RDS starts a stopped instance by itself after seven days, and the storage keeps running during the pause. Instances not needed for good are deleted with a snapshot.
- The proxy costs per vCPU, not per connection. RDS Proxy pays the instance's vCPU, at least two, per hour. On a small instance it easily exceeds a tenth of its price.
Example
List prices in USD for Frankfurt (eu-central-1), read on 2026-10-21 from the AWS price list: a db.m7g.large (2 vCPU, 8 GiB) costs USD 0.200 per hour Single-AZ and USD 0.401 Multi-AZ with MySQL or PostgreSQL, USD 146.00 and USD 292.73 for a month of 730 hours; a db.m6i.large with SQL Server Standard licence included USD 1.011 per hour Single-AZ. gp3 storage costs USD 0.137 per GB-month Single-AZ and USD 0.274 Multi-AZ, backups above the allowance USD 0.103 per GB-month, extended support for PostgreSQL 13 USD 0.122 per vCPU-hour in the first two years and USD 0.244 in the third, RDS Proxy USD 0.018 per vCPU-hour. On Aurora, a db.r7g.large (2 vCPU, 16 GiB) costs USD 0.333 per hour under Standard and USD 0.433 under I/O-Optimized, storage USD 0.119 and USD 0.268 per GB-month, I/O USD 0.22 per million, Serverless v2 USD 0.14 and USD 0.19 per ACU-hour, backups above the cluster volume USD 0.023 per GB-month.
A PostgreSQL database on db.m7g.large with 200 GB of gp3 costs 146.00 plus 27.40 = USD 173.40 a month Single-AZ and 292.73 plus 54.80 = USD 347.53 Multi-AZ; on PostgreSQL 13 it adds 2 × 730 × 0.122 = USD 178.12 of extended support, more than the instance itself. An Aurora cluster with one db.r7g.large, 200 GB and 300 million I/O a month costs 243.09 plus 23.80 plus 66.00 = USD 332.89 under Standard and 316.09 plus 53.60 = USD 369.69 under I/O-Optimized; at 600 million I/O the comparison tips to 398.89 against USD 369.69. The figures show that Multi-AZ and extended support each cost more than the database itself, and that I/O-Optimized becomes cheaper only above an I/O share of roughly a quarter, as AWS states it.
Sources
Read on 2026-10-21. Prices: Amazon RDS for MySQL pricing, Amazon Aurora pricing, Amazon RDS Proxy pricing, AWS Price List, offer AmazonRDS for eu-central-1. Billing data: Cost and Usage Report columns: lineItem, FOCUS 1.0 with AWS columns. Service: Amazon RDS Extended Support, Multi-AZ deployments, RDS storage types, automated backups, stopping a DB instance, Aurora storage and reliability, Aurora Serverless v2 and how it works.