template_fileはdeprecatedなので組み込みのtemplatefileを使う
概要
template_file は template プロバイダーを使って、レンダリングするために terraform 0.11 まで使われてきたが、0.12以降は組み込みの templatefile
を使うように公式でアナウンスされています。
https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file
In Terraform 0.12 and later, the templatefile function offers a built-in mechanism for rendering a template from a file. Use that function instead, unless you are using Terraform 0.11 or earlier.
https://registry.terraform.io/providers/hashicorp/template/latest/docs#deprecation
パッと見、プロバイダーから組み込みに変えるのは大変そうに思うかもしれませんが、実際はそんなことはなく、シンプルに置き換えが可能です。
Before
例えば下記のように、 templte_file
を使って、dataを定義している場合は、dataとresourceで2つに分けて書く必要がありました。
template = file("files/example_policy.json")
}
resource "aws_ecr_lifecycle_policy" "example" {
repository = aws_ecr_repository.example.name
policy = data.template_file.example_policy.rendered
var = {
name = "example"
}
}
After
templatefile
になったことで、resource内に直接参照元のファイルパスを指定することができ、また変数を埋め込むことが可能です。
repository = aws_ecr_repository.example.name
policy = templatefile("${path.module}/files/example_policy.json", {
name = "example"
})
}
新しく書き換える際は、dataのときに記載していた変数をそのままコピーして、 第二引数の {}
のマッピングの中に書いてあげればOKです。