You need to enable JavaScript to run this app. Terraform加载EKS策略JSON报错aws_iam_policy_document不支持如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Terraform加载EKS策略JSON报错aws_iam_policy_document不支持如何解决

解决方法

首先明确错误根源:aws_iam_policy_document是AWS Provider提供的数据源类型,不是资源类型,你使用resource块声明属于语法错误,同时参数配置也不符合数据源要求。

方案1:直接引用JSON文件(适配你的当前场景)

如果你已经写好完整的EKS用户策略JSON,不需要动态修改策略内容,直接在IAM策略资源中引用文件即可,无需使用aws_iam_policy_document:

resource "aws_iam_policy" "eks_ops_manager" {
  name        = "eks-ops-user-policy"
  description = "EKS专属用户权限策略"
  policy      = file("templates/eks_user_policy.json")
}

方案2:修正数据源声明(适合需要动态扩展策略的场景)

如果你后续需要对现有JSON策略做动态拼接、添加权限语句、合并策略等操作,把块类型从resource改为data,同时将参数替换为数据源支持的source_json:

# 声明数据源加载现有JSON策略
data "aws_iam_policy_document" "ops_manager" {
  source_json = file("templates/eks_user_policy.json")
  # 可在此处添加额外的statement块动态扩展权限
}

# 引用数据源生成的策略创建IAM资源
resource "aws_iam_policy" "eks_ops_manager" {
  name        = "eks-ops-user-policy"
  description = "EKS专属用户权限策略"
  policy      = data.aws_iam_policy_document.ops_manager.json
}

兼容检查配置

你使用的Terraform v0.14.9仅兼容3.x版本的AWS Provider,需在根目录声明版本锁定规则,避免拉取不兼容的高版本Provider:

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

修改配置后先执行terraform init重新初始化Provider,再执行terraform plan即可消除报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 09:36:10