今回は、ヒアドキュメントの<<と<<-の違いについてです。
■結論
インデントが無効になるのが <<
インデントが有効になるのが <<-
■実例
例えば、以下の通り<< , <<-の違いしかないIAMポリシー作成コードの場合、
# インデントが有効になる記載(<<-)
resource "aws_iam_policy" "indented_heredoc_test" {
name = "indented_heredoc"
policy = <<-EOT
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": ":s3:*",
"Resource": "*"
}
}
EOT
}
# インデントが無効になる記載(<<)
resource "aws_iam_policy" "no_indented_heredoc_test" {
name = "no_indented_heredoc"
policy = <<EOT
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": ":s3:*",
"Resource": "*"
}
}
EOT
}
下の「インデントが無効になる記載(<<)」の場合はterraform plan時に
Error: "policy" contains an invalid JSON policy
というエラーが出力されます。
上の「# インデントが有効になる記載(<<-)」はエラーになりません。
■ユースケース
<< も <<- もどちらを使っても間違いではないが、
terraformコード上、インデントを付けて記載したい場合(IAMPolicyとか)は、
<<- をつかったヒアドキュメント形式の方が見やすくなります。
※好みの問題な気もするので、お好きな方で。
以上です。