我正在与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 "$"
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
根据错误消息和Matt Schuchard的建议,可以得出结论, data.template_file 选项不支持v11.13中的插值