今回は、terraformでヒアドキュメントを利用する際の<<と<<-の違いについてです。
■背景
IAMポリシーを作成する際、<<を利用してterraform planを行うと以下の通りエラーが出力される。
【コード】
【terraform plan結果】
"policy "には、無効なJSONポリシーが含まれています:先頭のスペース文字は使用できません。
■結論
<<-だとエラーは出ない。
■何故?
まず、<< を使った場合のエラーは、
「先頭のスペース文字は使用できません。」
です。
つまり、<<を使う場合、ヒアドキュメント内の全てのインデント(つまり、行の先頭のスペースまたはタブ)がそのまま保持されます。
<<- を使った場合には、インデントが削除されるため、エラーが発生しません。
具体的には、終端マーカー(この場合はEOF)が記述されている行のインデントレベルまでのスペースやタブが、ヒアドキュメント内の各行から削除されます。
以上です。