使用Terraform部署AWS EKS测试集群时遇子网数量不足错误
解决Terraform部署AWS EKS集群时
vpc_config.0.subnet_ids条目不足错误 问题重现
执行Terraform计划命令时触发报错:
Error: Not enough list items
vpc_config.0.subnet_idsrequires at least 1 elements, but got 0.
场景:使用与开发环境一致的代码部署测试环境EKS集群,通过test.tfvars指定测试环境参数。
根因分析
- EKS模块的
private_subnets配置依赖data.aws_subnets.subnet_ids_private.ids,但该数据源的vpc-id过滤器未赋值,导致查询结果为空列表 test.tfvars中定义的subnet_ids变量未被实际引用,无法传入有效子网ID- 开发环境可正常运行,是因为该环境中数据源的
vpc-id被正确配置,能获取到私有子网ID
修复方案
方案1:修正数据源的VPC ID过滤条件
确保data.aws_subnets.subnet_ids_private的vpc-id过滤器指向测试环境的VPC ID,可通过变量从test.tfvars读取:
data "aws_subnets" "subnet_ids_private" { filter { name = "vpc-id" values = [var.test_vpc_id] # 确保test.tfvars中已定义test_vpc_id并赋值 } # 可选:添加标签过滤器确保只获取私有子网 filter { name = "tag:Environment" values = ["test"] } }
方案2:直接使用test.tfvars中的子网ID列表
修改EKS模块配置,跳过数据源查询,直接引用test.tfvars中定义的subnet_ids:
module "eks" { source = "./path/to/eks-module" # 其他必填配置项... private_subnets = var.subnet_ids # 直接使用test.tfvars里的子网ID列表 }
验证操作
执行以下命令确认错误已修复:
terraform plan -var-file=test.tfvars
检查计划输出中EKS集群的vpc_config.subnet_ids是否包含有效子网ID。
内容的提问来源于stack exchange,提问作者Bilal Yousaf
相关产品推荐
相关产品推荐

