How to fix Error: Error creating EBS Volume: VolumeLimitExceeded in Terraform
The EBS VolumeLimitExceeded error occurs when you've reached AWS account or regional limits for EBS volumes. This can be resolved by deleting unused volumes or requesting a service quota increase through AWS.
Quick fix
Fixes VolumeLimitExceeded
aws ec2 describe-instances --instance-id <instance-id> --query 'Reservations[0].Instances[0].StateTransitionReason'- Verify the actual error in AWS Console
- Delete unused EBS volumes to free up quota
- Request an AWS Service Quota increase
- Update Terraform configuration if needed
aws ec2 describe-instances --instance-id <instance-id> --query 'Reservations[0].Instances[0].StateTransitionReason'Error: Error creating EBS Volume: VolumeLimitExceeded
What this error means
The VolumeLimitExceeded error indicates that your AWS account has reached the maximum number of EBS volumes allowed in a specific region or for a particular volume type. Each AWS account has service quotas that limit the number of active EBS volumes, storage capacity, and IOPS provisioning per region. When Terraform attempts to create an EBS volume and hits this limit, AWS rejects the request, causing EC2 instances to fail to launch. The error message may appear as "State transition reason: Client.VolumeLimitExceeded: Volume limit exceeded" when you check the failed EC2 instance in the AWS console. These limits exist to help AWS prevent resource exhaustion and manage service capacity. The good news is that AWS can automatically increase your quotas based on your usage patterns, and you can also manually request quota increases.
Typical symptoms
- Terraform apply fails with VolumeLimitExceeded error when creating EC2 instances or EBS volumes
- EC2 instances terminate immediately after launch with a VolumeLimitExceeded state transition reason
- aws_instance or aws_ebs_volume resource creation fails in Terraform
- Error message appears: 'Maximum number of active volumes iops, 100000, exceeded'
- Issues occur specifically in one AWS region but not others
Common causes
- Your AWS account has reached the maximum number of active EBS volumes in the target region
- You've exceeded the IOPS limit for a particular volume type (e.g., gp2, io1, gp3)
- Total storage allocated to a specific volume type exceeds your account quota
- Previous failed deployments left behind undeleted EBS volumes consuming your quota
How to fix "Error: Error creating EBS Volume: VolumeLimitExceeded"
First, confirm that the error is indeed VolumeLimitExceeded by checking the EC2 instance state reason in the AWS console:
1. Navigate to EC2 Dashboard > Instances
2. Find the failed instance (usually in 'terminated' state)
3. Check the "Instance State Transition Reason" field
4. You should see: "Client.VolumeLimitExceeded: Volume limit exceeded"
Alternatively, use the AWS CLI to inspect the instance:
aws ec2 describe-instances --instance-id <instance-id> --query 'Reservations[0].Instances[0].StateTransitionReason'This confirms whether the error is volume-related before proceeding with fixes.
The quickest fix is to remove unneeded EBS volumes:
1. Navigate to EC2 Dashboard > Elastic Block Store > Volumes
2. Filter for volumes in your target region
3. Select volumes that are not "in-use" (unattached volumes)
4. Right-click > Delete Volume
You can also delete via AWS CLI:
# List all available volumes in a region
aws ec2 describe-volumes --region us-east-1 --query 'Volumes[?State==`available`].{Id:VolumeId,Size:Size,Type:VolumeType}'
# Delete a specific volume
aws ec2 delete-volume --volume-id vol-1234567890abcdef0 --region us-east-1Deleting unused volumes immediately frees up quota for new volumes.
If you need more volumes, request a quota increase through the AWS Service Quotas console:
1. Go to https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/
2. Select your target region from the top-right dropdown
3. Search for quota names like:
- "Storage for General Purpose SSD (gp2) volumes"
- "Storage for General Purpose SSD (gp3) volumes"
- "Number of EBS volumes"
- "IOPS for Provisioned IOPS SSD (io1) volumes"
4. Click the quota name
5. Click "Request quota increase"
6. Enter your desired value
7. Click "Request"
AWS typically processes quota increase requests within a few minutes. You can also use the AWS CLI:
# Get current quota for gp2 volumes
aws service-quotas get-service-quota --service-code ebs --quota-code L-C18FBD6D --region us-east-1
# Request an increase
aws service-quotas request-service-quota-increase --service-code ebs --quota-code L-C18FBD6D --desired-value 150 --region us-east-1If you have legitimate needs for more volumes, update your Terraform code:
Option 1: Verify volume_type is set correctly
resource "aws_ebs_volume" "example" {
availability_zone = "us-east-1a"
size = 100
type = "gp3" # Explicitly set to gp3 instead of defaulting to io1
tags = {
Name = "example-volume"
}
}Option 2: Spread resources across regions
# Instead of creating all volumes in one region, distribute across regions
resource "aws_ebs_volume" "example" {
for_each = toset(["us-east-1a", "eu-west-1a"])
availability_zone = each.key
size = 100
type = "gp3"
tags = {
Name = "example-volume-${each.key}"
}
}Option 3: Use lifecycle policies to clean up old volumes
resource "aws_ebs_volume" "example" {
availability_zone = "us-east-1a"
size = 100
type = "gp3"
tags = {
Name = "example-volume"
}
lifecycle {
prevent_destroy = false # Allow Terraform to delete if needed
}
}Once you've deleted unused volumes or your quota increase is approved, re-run Terraform:
# Refresh your plan to see current AWS state
terraform plan
# Apply the configuration
terraform applyIf you were deleting volumes manually, Terraform may try to destroy/recreate resources. Use terraform import to sync state if needed, or use terraform state rm to remove resources that no longer exist in AWS.
Advanced notes
Quota Auto-Scaling: AWS monitors your EBS usage and can automatically increase your soft quotas (non-adjustable limits cannot be auto-increased). If you maintain consistent high usage, AWS may preemptively raise your limits.
Hard vs Soft Limits: Some limits are soft quotas (requestable), while others are hard limits that cannot be increased. For example, the maximum of 2500 volumes per instance in certain regions is a hard limit. However, the per-account/region storage limit is a soft quota you can increase.
Volume Attachment Limits: Be aware that instances have volume attachment limits. Nitro-based instances support up to 28 EBS attachments, while older instances may support fewer.
Spot Instances: If using spot instances, be aware that quotas still apply. Terminating a spot instance doesn't immediately free quota—quota is freed when the volume enters the "available" state.
Regional Awareness: Quotas are per-region. A quota increase in us-east-1 does not affect us-west-2. Plan your regional strategy accordingly when scaling infrastructure.
Frequently asked questions
- What does "VolumeLimitExceeded" mean?
- The VolumeLimitExceeded error indicates that your AWS account has reached the maximum number of EBS volumes allowed in a specific region or for a particular volume type. Each AWS account has service quotas that limit the number of active EBS volumes, storage capacity, and IOPS provisioning per region. When Terraform attempts to create an EBS volume and hits this limit, AWS rejects the request, causing EC2 instances to fail to launch.
- How do I fix "VolumeLimitExceeded"?
- The EBS VolumeLimitExceeded error occurs when you've reached AWS account or regional limits for EBS volumes. This can be resolved by deleting unused volumes or requesting a service quota increase through AWS.
- What causes "VolumeLimitExceeded"?
- Your AWS account has reached the maximum number of active EBS volumes in the target region You've exceeded the IOPS limit for a particular volume type (e.g., gp2, io1, gp3) Total storage allocated to a specific volume type exceeds your account quota
- Is the "VolumeLimitExceeded" error serious?
- Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- 📚Terraform Official Documentation
- 📖AWS EBS: Quotas for Amazon EBS(Official Docs)
- 📖AWS EC2: Service quotas(Official Docs)
- 🐙