Terraform で JSON ファイルをテンプレートとして扱う
各種ポリシーや ECS のコンテナ定義など、AWS では JSON フォーマットを強いられることが多い。もし AWS の環境構築に Terraform を利用しているのであれば、JSON ファイルをテンプレートとして扱える template_file が何かと便利である。なお、JSON に特化しているわけではないため、テキストファイルでさえあれば汎用的な利用が可能となっている。 追記 2022/08/31
v0.12以降はビルトインファンクションとして提供されている templatefile への置き換えを推奨。これに関連して Mac M1 で terraform init できない問題に遭遇した。 使用例
code:example.json
[
{
"name": "${name}",
"image": "nginx:${tag}",
"essential": true,
"portMappings": [
{
"protocol": "tcp",
"containerPort": 80
}
]
}
]
code:taskdef.tf
data "template_file" "taskdef_json" {
template = file("example.json")
vars = {
name = "web"
tag = "latest"
}
}
code:use
data.template_file.taskdef_json.rendered
参考