Skip to main content
performance · aws

RDS gp2 storage, where migrating to gp3 saves nothing by design

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

ZopNight deliberately reports nothing for RDS gp2 volumes today: AWS prices RDS gp2 and gp3 storage at the same per-GB-month rate (both $0.115 in us-east-1 Single-AZ), so unlike EBS there is no dollar saving to quantify. The gp3 migration still pays off in performance: 3000 baseline IOPS decoupled from size.

Signal and threshold

How ZopNight evaluates RDS gp2 storage, where migrating to gp3 saves nothing by design.
Field Value
Rule IDsRC-167
Categoryperformance
Severitymedium
Metricnone — pure configuration read
Sourcerds_storage_optimization.go

A rule that deliberately reports nothing

Every real evaluation of this rule ends in an abstain, and that is the correct behaviour rather than a gap. The gates still run (the instance’s discovered storage type must be gp2 and a priced monthly cost must exist), but no finding is ever emitted, because the saving this migration is usually assumed to carry does not exist on RDS.

Why the EBS playbook does not transfer

On EBS, gp3 is priced below gp2 per GB-month, and the EBS equivalent of this rule reclaims that real delta. On RDS, AWS prices gp2 and gp3 database storage at the same per-GB-month rate ($0.115 in us-east-1 Single-AZ), and the pricing pipeline ingests both storage SKUs and confirms they are identical. The storage-line saving is genuinely $0, not merely unmeasured.

There is a second, independent blocker: the priced cost available per instance is the total monthly bill, which is overwhelmingly compute. Applying any fraction of it to represent a storage-line saving would fabricate a number, and a cost recommendation here is concrete or it is nothing.

What would wake it up

The ingestion already keys the two storage SKUs separately, per region. If AWS ever prices RDS gp2 above gp3 anywhere, the rates diverge, and the rule’s documented upgrade path is to read the allocated storage size and emit a real finding whose saving equals storage GB times the per-GB rate delta, gated above $5 a month. Until that day, abstaining is the permanently correct answer.

The performance case still stands

None of this means staying on gp2. gp3 gives a 3,000 IOPS / 125 MiB/s baseline independent of volume size, where gp2 couples performance to how many GB were allocated. Small volumes gain the most: the smaller the gp2 volume, the further below that gp3 baseline its coupled performance sits. The migration is a modification of the instance’s storage type, runs online with no downtime, and lets you configure IOPS and throughput explicitly afterwards. A worthwhile change. Just a performance decision, not a cost finding a savings platform should print.

Check what you have

Terminal window
aws rds describe-db-instances \
--query "DBInstances[?StorageType=='gp2'].[DBInstanceIdentifier,AllocatedStorage,Iops]" \
--output table

Anything listed migrates for free in dollar terms and gains a predictable performance floor in the same move. Monitor IOPS after the change to confirm the configured baseline actually covers the workload.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·