# Error: error creating EC2 Instance: insufficient IP addresses in subnet (subnet-abc123) when creating a new instance

- **ID:** `terraform/insufficient-ip-addresses-in-subnet`
- **Domain:** terraform
- **Category:** resource_error
- **Error Code:** `InsufficientIPAddressesInSubnet`
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

The AWS subnet has exhausted its available IP addresses, often due to too many ENIs or instances consuming the CIDR range, or the subnet's CIDR block being too small.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Terraform v1.5 | active | — | — |
| Terraform v1.6 | active | — | — |
| Terraform v1.7 | active | — | — |
| AWS Provider v5.0 | active | — | — |

## Workarounds

1. **Increase the subnet CIDR block size: update `cidr_block = "10.0.1.0/24"` to a larger range like `10.0.1.0/23` (requires recreating the subnet) or add a new subnet with a larger CIDR.** (95% success)
   ```
   Increase the subnet CIDR block size: update `cidr_block = "10.0.1.0/24"` to a larger range like `10.0.1.0/23` (requires recreating the subnet) or add a new subnet with a larger CIDR.
   ```
2. **Use `aws ec2 describe-subnets --subnet-ids subnet-abc123 --query 'Subnets[0].AvailableIpAddressCount'` to check available IPs, then reduce instance count or use a different subnet with free IPs.** (80% success)
   ```
   Use `aws ec2 describe-subnets --subnet-ids subnet-abc123 --query 'Subnets[0].AvailableIpAddressCount'` to check available IPs, then reduce instance count or use a different subnet with free IPs.
   ```
3. **Implement a lifecycle policy to terminate idle instances or use auto-scaling with a minimum/maximum size to free IPs dynamically.** (70% success)
   ```
   Implement a lifecycle policy to terminate idle instances or use auto-scaling with a minimum/maximum size to free IPs dynamically.
   ```

## Dead Ends

- **Increasing the instance count in the Terraform configuration without adjusting the subnet CIDR** — More instances will consume more IPs, worsening the shortage; Terraform will fail with the same error for each new instance. (95% fail)
- **Deleting unused instances manually via AWS console but not updating Terraform state** — Terraform state still tracks deleted instances, causing drift; subsequent apply may try to recreate them, consuming IPs again. (70% fail)
- **Changing the subnet ID to a different existing subnet without verifying its IP availability** — The new subnet may also have limited IPs; without checking available addresses, the error may simply move to another subnet. (60% fail)
