AWSAmazon AuroraDatabase

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.

DimensionUnitWhat's being charged
Instance hours (provisioned)per hour per instanceEach 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-hoursper ACU-hourServerless v2 scales ACUs from min_capacity to max_capacity based on load.
$0.12/ACU-hour for PostgreSQL
Storageper GB-monthPay 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/ORead 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-monthBackups 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 workloads

Serverless 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.