Terraform无实际文件时,如何将template_file转为templatefile函数?
替换Terraform的template_file为templatefile函数(无实际文件场景)
你的原代码里用data "template_file"属于冗余写法,本质是直接构造JSON结构,完全不需要通过模板模块实现,最简洁的替代方式是直接用本地值生成JSON:
locals { test1 = jsonencode([ { name = "MY_KEY" valueFrom = "${local.ssm_path}/MY_KEY" } ]) }
关于templatefile函数的说明
templatefile函数必须传入实际文件路径作为第一个参数,没有办法直接用内联字符串作为模板内容。如果一定要用templatefile,你需要先创建一个模板文件,比如在模块目录下新建templates/env_var.tpl,内容如下:
[ { "name": "MY_KEY", "valueFrom": "${ssm_path}/MY_KEY" } ]
然后在Terraform代码中调用:
locals { test1 = templatefile("${path.module}/templates/env_var.tpl", { ssm_path = local.ssm_path }) }
额外优化
原代码中的concat函数是多余的——你只传入了一个数组参数,直接写数组即可,不需要嵌套concat。
内容的提问来源于stack exchange,提问作者Ala
相关产品推荐
相关产品推荐

