aws_ ebs_ volume cost estimation
A persistent block storage volume. Priced per GB-month by volume type, with separate IOPS and throughput charges on certain types.
An aws_
The volume types and their cost profiles:
gp3 is the modern general-purpose default. Cheapest per GB at roughly $0.08/GB-month. Includes 3,000 baseline IOPS and 125 MB/s throughput for free; additional IOPS and throughput are billed separately.
gp2 is the older general-purpose tier, ~10-20% more expensive than gp3 at the same size, with IOPS scaling by size (3 IOPS per GB). No reason to choose gp2 over gp3 for new workloads.
io1 and io2 are provisioned-IOPS SSDs for the highest performance. io2 is roughly the same per-GB rate as io1 but with much higher durability. Both charge per provisioned IOPS in addition to per GB.
st1 (throughput-optimized HDD) and sc1 (cold HDD) are cheaper per GB than SSDs but have lower IOPS. Right for sequential workloads like log processing or rarely-accessed data.
Snapshots are billed separately by aws_
c3x reads volume type, size, IOPS, and throughput from the Terraform configuration and computes the monthly cost. Volumes are billed even when detached, even when the parent instance is stopped.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "aws_ebs_volume" "data" {
availability_zone = "us-east-1a"
size = 1000
type = "gp3"
iops = 5000
throughput = 250
tags = {
Name = "data-volume"
}
}Pricing dimensions
What you actually pay for when you provision aws_.
| Dimension | Unit | What's being charged |
|---|---|---|
| Storage | per GB-month | Provisioned size. Same rate regardless of how full the volume is. $0.08/GB-month for gp3, $0.10 for gp2, $0.125 for io2 in us-east-1 |
| Provisioned IOPS (gp3 above baseline) | per IOPS-month | gp3 includes 3,000 IOPS at the base rate. Above 3,000 IOPS is billed separately. $0.005 per provisioned IOPS-month |
| Provisioned throughput (gp3 above baseline) | per MB/s-month | gp3 includes 125 MB/s throughput at the base rate. Above 125 MB/s is billed separately. $0.04 per provisioned MB/s-month |
| Provisioned IOPS (io1/io2) | per IOPS-month | io1 and io2 charge separately for every provisioned IOPS, with tiered pricing. |
Optimization tips
Common ways to reduce aws_ cost without changing the workload.
Migrate gp2 volumes to gp3
About 20%gp3 is roughly 20% cheaper than gp2 at the same size and provides 3,000 baseline IOPS by default. Most workloads see no performance regression. The migration can be done in-place with ModifyVolume.
Don't over-provision IOPS or throughput on gp3
Workload-dependentThe 3,000 IOPS and 125 MB/s baseline is enough for most workloads. Only buy more if iostat shows you hitting the ceiling. Provisioned IOPS above baseline adds up fast.
Use st1 or sc1 for cold or sequential data
50-75% per GBLogs, backups, and archives don't need SSD performance. st1 is about half the per-GB cost of gp3, sc1 is about a quarter.
Delete detached volumes
100% of cost on stale volumesEBS volumes keep billing while detached. Audit periodically with aws ec2 describe-volumes --filters Name=status,Values=available and delete what isn't needed.
FAQ
Are EBS volumes billed when the EC2 instance is stopped?
Yes. EBS storage is billed continuously regardless of instance state. Only deleting the volume stops the charge.
Does c3x estimate snapshot cost?
Snapshots are a separate resource (aws_
Why is io2 the same price per GB as io1 if it has better durability?
AWS prices io2 at parity with io1 to encourage migration. io2 has 100x better durability (99.999% vs 99.8%) and supports higher IOPS-per-GB ratios. For new volumes always pick io2 over io1.
What about io2 Block Express?
io2 Block Express is a higher tier of io2 supporting up to 256,000 IOPS and 4,000 MB/s. Available on r5b, R7iz, and select other instance families. c3x picks up the throughput attribute and prices accordingly.
Related resources
More AWS resources
Further reading
- AWS EBS snapshot cost: incremental storage and the archive tier
EBS snapshots bill about $0.05 per GB-month for changed blocks (they are incremental), or about $0.0125 in the Archive tier for rarely-restored snapshots. Snapshot sprawl from unmanaged schedules is the usual culprit. Here is how to control it.
- AWS i4i vs i3 cost: newer storage-optimized instances, better value
i4i storage-optimized instances offer faster NVMe local storage and better price-performance than the older i3 generation. For high-IOPS, low-latency local-disk workloads, the newer generation is usually the cost-effective choice. Here is the comparison.
- AWS Outposts cost: paying for AWS hardware in your data center
Outposts brings AWS infrastructure on-premises, priced as a capacity commitment (upfront and/or monthly over a 3-year term) for the rack or servers. It suits low-latency or data-residency needs, at a substantial fixed cost. Here is the model.
- AWS Wavelength cost: pricing for 5G edge compute
AWS Wavelength embeds compute and storage inside telecom 5G networks for ultra-low latency to mobile devices, at a premium over the parent region. Here is how Wavelength is priced, the transfer implications, and when it is worth it.
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_.