EBS Volume Cost Advisor · guide

gp2 vs gp3: EBS volume cost and how to migrate

Short answer: for almost every general-purpose volume, gp3 is 20% cheaper than gp2 and faster by default, and you can switch live. The savings that matter most are elsewhere: provisioned-IOPS volumes billing for IOPS they never use, and volumes nobody has attached for months.

What each type costs (us-east-1 list prices, illustrative)

Where the money is

Measure and migrate

  1. List volumes: aws ec2 describe-volumes --query 'Volumes[].[VolumeId,VolumeType,Size,Iops,Throughput,State]' --output text.
  2. For each, take the busiest week's peak of VolumeReadOps + VolumeWriteOps divided by the period in seconds (use a 1 or 5 minute period), and of VolumeReadBytes + VolumeWriteBytes in MiB/s.
  3. Paste rows into the advisor, or run node cli.mjs analyze volumes.csv. It prints a modify-volume command per volume.
  4. Change one non-critical volume first; the type change is live but the volume spends time in the optimizing state.

Questions

Is gp3 cheaper than gp2?

Yes for nearly every volume: gp3 costs $0.08 per GB-month against $0.10 for gp2 and includes 3,000 IOPS and 125 MiB/s, which gp2 only reaches at 1,000 GB. Extra gp3 IOPS cost $0.005 per IOPS-month and extra throughput $0.04 per MiB/s-month.

Can I switch gp2 to gp3 without downtime?

Yes. Elastic Volumes changes type, IOPS and throughput on an attached volume. Run aws ec2 modify-volume --volume-id vol-xxxx --volume-type gp3 --iops 3000 --throughput 125; the volume is usable while it optimizes, and you can modify a volume roughly once every six hours.

Why is my io1 volume so expensive?

io1 and io2 charge $0.065 per provisioned IOPS-month on top of $0.125 per GB. A volume provisioned at 20,000 IOPS but peaking at 6,000 pays for 14,000 IOPS it never uses. If the peak fits gp3's 16,000 IOPS and 1,000 MiB/s ceiling, gp3 costs a small fraction of that.