InsufficientIPAddressesInSubnet terraform resource_error ai_generated true

错误:创建 EC2 实例时出错:子网 (subnet-abc123) 中的 IP 地址不足,无法创建新实例

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

ID: terraform/insufficient-ip-addresses-in-subnet

其他格式: JSON · Markdown 中文 · English
85%修复率
86%置信度
1证据数
2024-01-10首次发现

版本兼容性

版本状态引入弃用备注
Terraform v1.5 active
Terraform v1.6 active
Terraform v1.7 active
AWS Provider v5.0 active

根因分析

AWS 子网已耗尽可用 IP 地址,通常是由于过多的 ENI 或实例消耗了 CIDR 范围,或者子网的 CIDR 块太小。

English

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.

generic

官方文档

https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html

解决方案

  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.
  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.
  3. Implement a lifecycle policy to terminate idle instances or use auto-scaling with a minimum/maximum size to free IPs dynamically.

无效尝试

常见但无效的做法:

  1. Increasing the instance count in the Terraform configuration without adjusting the subnet CIDR 95% 失败

    More instances will consume more IPs, worsening the shortage; Terraform will fail with the same error for each new instance.

  2. Deleting unused instances manually via AWS console but not updating Terraform state 70% 失败

    Terraform state still tracks deleted instances, causing drift; subsequent apply may try to recreate them, consuming IPs again.

  3. Changing the subnet ID to a different existing subnet without verifying its IP availability 60% 失败

    The new subnet may also have limited IPs; without checking available addresses, the error may simply move to another subnet.