繁体   English   中英

Terraform 创建和附加 aws iam 策略

[英]Terraform create and attach aws iam policies

我需要从 json 文件创建几个 iam 策略。 所以,我有一个名为 iam_policies.tf 的文件,其中包含许多以下代码:


resource "aws_iam_policy" "name" {
  name        = "policy-name"
  description = "Policy desc xxx"
  path        = "/"

  policy = file("${path.module}/_/iam_policies/policy.json")
}

在一个模块中,我想将这些策略用作 var 的参数,但是当我尝试附加策略时......

resource "aws_iam_role_policy_attachment" "me" {
  for_each   = toset(var.policies)
  role       = aws_iam_role.me.name
  policy_arn = each.value
}

我收到错误: “for_each”值取决于在应用之前无法确定的资源属性,因此 Terraform 无法预测将创建多少个实例。 要解决此问题,请使用 -target 参数首先仅应用 for_each 所依赖的资源。

这是创建策略资源和其他资源的模块:

module "admin" {
  source = "./repo/module_name"

  policies = [
    aws_iam_policy.common.arn,
    aws_iam_policy.ses_sending.arn,
    aws_iam_policy.athena_readonly.arn,
    aws_iam_policy.s3_deploy.arn,
  ]
...
}

我已经尝试过使用depends_on,但它不起作用。

我正在使用 terraform 云,所以我不能使用 apply -target

我能怎么做? 怎么了? 谢谢

如果您不能使用目标,则必须将您的部署分成两个部署。 首先,您部署策略,然后它们将成为主要部署的输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM