自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Terraform】(初心者向け)ヒアドキュメントの<<と<<-の違いについて

今回は、ヒアドキュメントの<<と<<-の違いについてです。

 

■結論

インデントが無効になるのが  <<

インデントが有効になるのが <<-

 

■実例

例えば、以下の通り<< , <<-の違いしかない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とか)は、
<<- をつかったヒアドキュメント形式の方が見やすくなります。

※好みの問題な気もするので、お好きな方で。

 

以上です。