Terrafrom v11.13将多个数据模板附加到单个资源

时间:2019-09-25 23:34:57

标签: terraform terraform-provider-aws

我正在与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 "$"

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

根据错误消息和Matt Schuchard的建议,可以得出结论, data.template_file 选项不支持v11.13中的插值