【发布时间】:2019-08-14 03:40:57
【问题描述】:
- 我正在创建一个以 .json 格式存储的 IAM 策略列表。
- 我只有 1 个资源块,通过使用
count = length(count)我想创建一个多 IAM 策略。 - 策略以 .json 格式存储。我在 Terraform 中使用
file()来指代它们。
如果我创建一个多资源块,程序就可以工作。
main.tf:
resource "aws_iam_role_policy" "cloudcheckr" {
count = "${length(var.file_name)}"
role = "${aws_iam_role.cloudcheckr.id}" // An IAM role is created in another resource block
name = "${var.file_name[count.index]}"
policy = "${file("${var.file_name[count.index]}.json")}"
变量.tf:
variable "file_name" {
type = "list"
default = [
"xxxxxx",
"xxxxxx",
"xxxxxx",
"xxxxxx",
]
}
预期结果:
创建了多个 IAM 策略。
实际结果:
aws_iam_role_policy.cloudcheckr: 3 error(s) occurred:
* aws_iam_role_policy.cloudcheckr[3]: file: open iam_policy_cloudcheckr_security.json: no such file or directory in:
${file("${var.file_name[count.index]}.json")}
* aws_iam_role_policy.cloudcheckr[0]: file: open iam_policy_cloudcheckr_cloudwatchflowlogs.json: no such file or directory in:
${file("${var.file_name[count.index]}.json")}
* aws_iam_role_policy.cloudcheckr[2]: file: open iam_policy_cloudcheckr_inventory.json: no such file or directory in:
${file("${var.file_name[count.index]}.json")}
【问题讨论】:
-
考虑使用'Path':terraform.io/docs/configuration-0-11/interpolation.html 总结:语法是path.TYPE。 TYPE 可以是 cwd、模块或根。 cwd 将插入当前工作目录。模块将插入当前模块的路径。 root 将插入根模块的路径。
标签: list file variables terraform