Skip to main content
rightsizing · aws

EBS gp2 to gp3 Migration

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Migrating gp2 EBS volumes to gp3 cuts the per-GB-month storage rate, and ZopNight prices the real rate delta netted against inherited performance charges. On ModifyVolume, $0.005 per IOPS above 3,000 and $0.04 per MB/s above 125 carry over. Abstains when either rate is missing or the netted savings are not positive.

Signal and threshold

How ZopNight evaluates EBS gp2 to gp3 Migration.
Field Value
Rule IDsRC-020
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sourceebs_gp2_migration.go

Spotting a gp2 volume and its gp3 target rate

  • resource.InstanceType == “gp2” (volume type encoded in InstanceType)
  • SKU rates: gp2 (source, seeded from InstanceType) and gp3 (target, via TargetSKUCandidates)
  • resource.Metadata[“iops”] / [“throughput”] (optional; discoverer-captured current provisioned IOPS/throughput, used to net out inherited gp3 charges; see below)

Netting the rate delta against inherited charges

real gp2→gp3 delta in the published per-GB-month storage rate, storageSavings = cost × (1 − gp3Rate/gp2Rate), netted against any gp3 IOPS/throughput charge the volume inherits post-migration. AWS’s ModifyVolume API, when no explicit target IOPS/throughput is given, provisions max(source performance, gp3 baseline), so a gp2 volume whose current IOPS exceed 3,000 or throughput exceeds 125 MB/s carries that higher performance over to gp3, where the aggregator bills it ($0.005/IOPS-month above 3,000, $0.04/MB/s-month above 125; mirrors calc_aws_storage.go). extraCost = max(0, iops−3000)×0.005 + max(0, throughput−125)×0.04, read from Metadata[“iops”]/[“throughput”] (absent/zero treated as within baseline, i.e. no extra charge, matching the aggregator’s own behavior for unset metadata). savings = storageSavings − extraCost. The rule abstains when either storage rate is absent, the storage delta is not a real reduction (gp3Rate ≥ gp2Rate), or the netted savings is ≤0 or ≥cost, and there is no fabricated flat fraction.

Changing volume type in place

  1. Create a snapshot of the volume as backup
  2. Go to EC2 Console → Volumes → Select volume
  3. Actions → Modify Volume → Change type to gp3
  4. Adjust IOPS and throughput if needed (gp3 baseline: 3000 IOPS, 125 MB/s)

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·