【发布时间】:2020-01-26 04:47:40
【问题描述】:
我正在使用 AWS 提供商运行 Terraform v11.13。是否可以将多个数据模板文件附加到单个资源?
这方面的一个示例是,您只有一个 aws_iam_policy 资源,但要让它从不同的数据模板文件创建多个 IAM 策略。
当它只是一个带有计数索引的数据模板文件时,它可以工作。当文件是静态文件时,它也可以工作,因为不是模板文件。
这里是代码示例
variable "policy_list"{
type = "list"
default = ["s3,"emr","lambda"]
}
resource "aws_iam_policy" "many_policies" {
count = "${length(var.policy_list)}"
name = "Policy_${var.policy_list[count.index]}_${var.environment}"
policy = "${file("${path.module}/files/policies/${var.environment}/${var.policy_list[count.index]}.json")}"
}
resource "aws_iam_role_policy_attachment" "many_policies_attachment" {
count = "${length(var.policy_list)}"
role = "${aws_iam_role.iam_roles.*.name[index(var.role_list, "MyRole"))]}"
policy_arn = "${aws_iam_policy.many_policies.*.arn[count.index]}"
}
但失败的是
resource "aws_iam_policy" "many_policies" {
count = "${length(var.policy_list)}"
name = "Policy_${var.policy_list[count.index]}_${var.environment}"
policy = "${data.template_file.${var.policy_list[count.index]}_policy_file.*.rendered[count.index]}"
}
带有类似于
的错误信息parse error expected "}" but found invalid sequence "$"
关于如何实现这一点的任何想法?
【问题讨论】:
-
什么失败了?你能分享这个失败的minimal reproducible example 并包括完整的错误吗?
-
从低层次来看,变量插值内的变量插值是不可能的。从高层次来看,在 Terraform
标签: terraform terraform-provider-aws