You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform部署AWS EKS测试集群时遇子网数量不足错误

解决Terraform部署AWS EKS集群时vpc_config.0.subnet_ids条目不足错误

问题重现

执行Terraform计划命令时触发报错:

Error: Not enough list items
vpc_config.0.subnet_ids requires 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:13:20