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

使用Terraform EKS模块创建集群时遇name参数缺失错误求助

Terraform EKS集群创建:解决"name参数必填但未找到定义"错误

错误原因

  1. 参数取值错误:data "aws_eks_cluster"和data "aws_eks_cluster_auth"的name参数需要传入集群名称,但你使用的module.eks.cluster_id是该版本EKS模块输出的集群ARN,不符合参数要求。
  2. 代码顺序问题:data资源定义在EKS模块之前,Terraform初始解析时无法识别后续模块的输出变量,导致判定name参数未赋值。
  3. 冗余操作:terraform-aws-modules/eks/aws模块已直接输出配置Kubernetes Provider所需的所有信息,无需额外通过data资源重复获取。

解决方案(推荐):直接使用模块输出配置Kubernetes Provider

删除冗余的data资源,直接引用EKS模块的输出参数配置Kubernetes Provider,同时调整代码顺序将模块放在前面:

# 先定义EKS模块,确保Terraform先识别其输出变量
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "19.16.0"

  cluster_name = "myapp-eks-cluster"
  cluster_version = "1.27"
  
  subnet_ids = module.myapp-vpc.private_subnets
  vpc_id = module.myapp-vpc.vpc_id

  tags = {
    environment = "development"
    application = "myapp"
  }

  eks_managed_node_groups = [
    {
      instance_type = "t2.small"
      name = "worker-group-1"
      asg_desired_capacity = 2
    },
    {
      instance_type = "t2.medium"
      name = "worker-group-2"
      asg_desired_capacity = 1
    },
  ]
}

# 直接使用模块输出配置Kubernetes Provider
provider "kubernetes" {
  host = module.eks.cluster_endpoint
  token = module.eks.cluster_auth_token
  cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data)
}

output "cc-name" {
  value = module.eks.cluster_name # 如需输出集群名称,使用cluster_name而非cluster_id
}

备选方案:修正data资源的使用

如果确实需要保留data资源,需调整代码顺序并修正参数取值:

module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "19.16.0"

  cluster_name = "myapp-eks-cluster"
  cluster_version = "1.27"
  
  subnet_ids = module.myapp-vpc.private_subnets
  vpc_id = module.myapp-vpc.vpc_id

  tags = {
    environment = "development"
    application = "myapp"
  }

  eks_managed_node_groups = [
    {
      instance_type = "t2.small"
      name = "worker-group-1"
      asg_desired_capacity = 2
    },
    {
      instance_type = "t2.medium"
      name = "worker-group-2"
      asg_desired_capacity = 1
    },
  ]
}

data "aws_eks_cluster" "myapp-cluster"{
  name = module.eks.cluster_name # 使用集群名称而非ARN
}

data "aws_eks_cluster_auth" "myapp-cluster" {
  name = module.eks.cluster_name # 使用集群名称而非ARN
}   

provider "kubernetes" {
  host = data.aws_eks_cluster.myapp-cluster.endpoint
  token = data.aws_eks_cluster_auth.myapp-cluster.token
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.myapp-cluster.certificate_authority.0.data)
}

output "cc-name" {
  value = module.eks.cluster_name
}

内容的提问来源于stack exchange,提问作者Fatima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:55:39