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

Terraform报错:缺失必填参数,请求排查EKS配置问题

Terraform EKS配置报错排查:Missing required argument

报错信息

│ Error: Missing required argument
│ 
│   with data.aws_eks_cluster_auth.default,
│   on main.tf line 126, in data "aws_eks_cluster_auth" "default":
│  126:   name = module.eks.cluster_id
│ 
│ The argument "name" is required, but no definition was found.
╵
╷
│ Error: Missing required argument
│ 
│   with data.aws_eks_cluster.default,
│   on main.tf line 122, in data "aws_eks_cluster" "default":
│  122:   name = module.eks.cluster_id
│ 
│ The argument "name" is required, but no definition was found.

我的配置代码

主配置文件(main.tf)

module "eks" {
...
}

data "aws_eks_cluster" "default" {
  name = module.eks.cluster_id # 报错行
}

data "aws_eks_cluster_auth" "default" {
  name = module.eks.cluster_id # 报错行
}

provider "kubernetes" {
  host                   = data.aws_eks_cluster.default.endpoint
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.default.certificate_authority[0].data)
  token                  = data.aws_eks_cluster_auth.default.token
}

版本约束配置(versions.tf)

terraform {
  cloud {
    organization = "abc"
    workspaces {
      name = "abc00"
    }
  }

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.7.0"
    }

    random = {
      source  = "hashicorp/random"
      version = "~> 3.5.1"
    }

    tls = {
      source  = "hashicorp/tls"
      version = "~> 4.0.4"
    }

    cloudinit = {
      source  = "hashicorp/cloudinit"
      version = "~> 2.3.2"
    }

    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = ">= 1.11.1"
    }
  }

  required_version = "~> 1.3"
}

排查与解决方案

报错本质是Terraform无法识别module.eks.cluster_id这个输出变量,导致判定name参数未被正确赋值,按以下步骤排查:

  • 锁定EKS模块版本:你参考的是指定版本的官方示例,但如果module "eks"块未明确标注该版本,可能拉取了其他版本的模块,不同版本的输出变量名称可能存在差异。修改模块配置,明确指定版本:
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "17.24.0" # 与参考示例版本保持一致
  # 其他必要配置参数...
}
  • 重新初始化模块:如果模块未被正确下载或初始化,Terraform无法识别其输出变量。执行以下命令重新初始化:
terraform init -upgrade
  • 核对输出变量名称:检查你使用的EKS模块版本的输出文档,确认是否存在cluster_id这个输出。如果模块版本不同,可能输出名称为cluster_name,此时需将代码中的module.eks.cluster_id替换为module.eks.cluster_name。

  • 清理缓存与状态:若之前使用过其他版本的模块,可能存在缓存干扰。删除.terraform目录和.terraform.lock.hcl文件后,重新执行terraform init。

内容的提问来源于stack exchange,提问作者Jenia Be Nice Please

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:11:30