aws_rds_cluster cost estimation
An Aurora cluster (MySQL or PostgreSQL compatible). Priced by per-instance compute, storage by GB used, and I/O (Standard) or compute (I/O-Optimized).
An aws_rds_cluster is an Aurora cluster. Aurora is AWS's home-built database that wire-protocol-compatible with MySQL or PostgreSQL but has a different storage architecture. Pricing differs from aws_db_instance (RDS) in several important ways.
First, compute. Each Aurora instance (aws_rds_cluster_instance) is billed per hour by class, similar to RDS. The cluster itself has no separate hourly fee. A typical production cluster has 1 writer instance and 1-2 reader instances, each billed at the same hourly rate. Aurora Serverless v2 instances are billed per ACU-hour (Aurora Capacity Unit), scaling automatically.
Second, storage. Aurora storage is "infinitely scalable" with no provisioning. You're billed only for the data you actually store, at roughly $0.10/GB-month. This is different from RDS, where you pay for provisioned size regardless of usage.
Third, I/O. This is the Aurora-specific dimension. The Standard storage configuration charges per million I/O operations ($0.20/M). The I/O-Optimized configuration eliminates I/O fees but charges higher compute rates (25-30% more). For I/O-intensive workloads (>25% of total cost in I/O), I/O-Optimized is cheaper. For write-light workloads, Standard wins.
Fourth, backup storage above the cluster size. Backups up to 100% of the cluster size are free. Beyond that, you pay $0.021/GB-month.
c3x reads engine, engine_mode (provisioned vs serverless v2), storage_type (Standard or I/O-Optimized), and the linked cluster instances. Aurora Serverless v2 capacity is computed from min_capacity and max_capacity in the scaling_configuration.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "aws_rds_cluster" "main" {
cluster_identifier = "production-aurora"
engine = "aurora-postgresql"
engine_version = "16.4"
database_name = "app"
master_username = "admin"
master_password = var.db_password
backup_retention_period = 14
storage_type = "aurora-iopt1"
skip_final_snapshot = false
}
resource "aws_rds_cluster_instance" "writer" {
cluster_identifier = aws_rds_cluster.main.id
identifier = "production-aurora-writer"
instance_class = "db.r6g.large"
engine = aws_rds_cluster.main.engine
}
resource "aws_rds_cluster_instance" "reader" {
cluster_identifier = aws_rds_cluster.main.id
identifier = "production-aurora-reader"
instance_class = "db.r6g.large"
engine = aws_rds_cluster.main.engine
}Pricing dimensions
What you actually pay for when you provision aws_rds_cluster.
| Dimension | Unit | What's being charged |
|---|---|---|
| Instance hours (provisioned) | per hour per instance | Each writer and reader instance is billed by class. Multiplied across instances. $0.29/hour for db.r6g.large PostgreSQL (Standard storage) |
| Aurora Serverless v2 ACU-hours | per ACU-hour | Serverless v2 scales ACUs from min_capacity to max_capacity based on load. $0.12/ACU-hour for PostgreSQL |
| Storage | per GB-month | Pay only for actual data stored, not provisioned size. Grows automatically. $0.10/GB-month (Standard) or $0.225/GB-month (I/O-Optimized) |
| I/O operations (Standard storage) | per 1M I/O | Read and write I/O operations. Eliminated in I/O-Optimized storage at the cost of higher compute and storage rates. $0.20/1M I/O |
| Backup storage (above cluster size) | per GB-month | Backups up to 100% of cluster size are free. $0.021/GB-month |
Optimization tips
Common ways to reduce aws_rds_cluster cost without changing the workload.
Use I/O-Optimized storage for write-heavy workloads
Workload-dependent, often 10-30%If I/O exceeds 25% of your bill on Standard storage, I/O-Optimized is cheaper. Compute is 25-30% more expensive but I/O is free.
Use Aurora Serverless v2 for variable workloads
30-70% on variable workloadsServerless v2 scales ACUs by demand. For low or variable utilization (dev, internal tools, multi-tenant SaaS), it's much cheaper than a fixed db.r6g.large running 24/7.
Buy reserved instances for steady-state clusters
30-60%Aurora reserved instances cut compute by 30-60%. Right for production clusters with stable instance count.
Use Graviton instances (db.r6g, db.r7g, db.r8g)
10-20%Graviton Aurora instances are 10-20% cheaper than equivalent Intel sizes (db.r5, db.r6i) with similar or better performance.
FAQ
What's the difference between aws_db_instance and aws_rds_cluster?
aws_db_instance is RDS (single instance with provisioned storage). aws_rds_cluster is Aurora (cluster of instances sharing distributed storage). Aurora typically performs better and scales more easily but costs more per compute hour.
How does I/O-Optimized storage save money?
Standard storage bills per I/O operation. For databases with high read/write throughput, I/O can be a third or more of total cost. I/O-Optimized eliminates I/O fees but charges 25-30% more for compute and 2.25x more for storage. Crossover is around 25% I/O share of total bill.
Does c3x estimate Aurora Serverless v2 cost?
Yes. c3x reads min_capacity and max_capacity from scaling_configuration. For accurate monthly cost, add expected average ACU usage to c3x-usage.yml. Without that, c3x assumes average sits at the midpoint of min/max.
Are read replicas counted separately?
Yes. Each aws_rds_cluster_instance is billed by its own instance class. A typical 1-writer + 2-readers cluster pays 3x the per-instance hourly rate.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including aws_rds_cluster.