【发布时间】:2019-03-21 02:22:14
【问题描述】:
我想将 3 个独立变量(dev_id、prod_id、stage_id)替换为包含所有三个变量的单个列表,并迭代它们,将它们应用于策略。
这是 terraform 可以做到的吗?
data "aws_iam_policy_document" "iam_policy_document_dynamodb" {
statement {
effect = "Allow"
resources = ["arn:aws:dynamodb:${var.region}:${var.account_id}:table:${var.dynamodb_table_name}"]
actions = [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
]
principals {
type = "AWS"
identifiers = [
"arn:aws:iam::${var.dev_id}:root",
"arn:aws:iam::${var.prod_id}:root",
"arn:aws:iam::${var.stage_id}:root"
]
}
}
}
我研究了循环和插值,但似乎 99% 的时间插值是用“计数”完成的,它只适用于创建多个资源(我希望我不是在说大谎)。
比如我用过
principals {
count = "${length(var.list)}"
identifiers = ["arn:aws:iam::${var.list[count.index]}"]
}
但这并不成功。
是否有某种方法可以实现将这 3 个变量替换为单个列表(或映射)并对其进行迭代的最终目标?
【问题讨论】:
-
您希望输出策略是什么样的?
-
我希望策略看起来与第一个代码块中的完全一样,也就是说,它应该包含 3 个不同的帐户 ID。但是,我想通过迭代来做到这一点,而不是对 3 个帐户进行硬编码......@ydaetskcoR
标签: terraform terraform-provider-aws