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 cloud,所以我不能使用 apply -target
我该怎么办?怎么了?
谢谢
如果不能使用目标,则必须将部署分成两个部署。首先部署策略,然后它们将成为主要部署的输入。
我需要从 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 cloud,所以我不能使用 apply -target
我该怎么办?怎么了? 谢谢
如果不能使用目标,则必须将部署分成两个部署。首先部署策略,然后它们将成为主要部署的输入。