Terraformの文字列に${...}
シーケンスを使うと、式を評価して文字列として設定します。文字列として${
をそのまま表示したい場合は、どのように設定したら良いのでしょうか?
結論
$
を2つ続けて入力します。
"... $${...} "
文字列補間の基本
Terraformでは、文字列内で変数や式の値を埋め込むために、文字列補間(String Interpolation)という機能を使用します。この機能は${...}
シーケンスを用いて実現されます。
例:
locals {
name = "Sumomo"
}
output "greeting" {
value = "Hello ${local.name}!"
}
この出力結果は次のようになります:
Hello Sumomo!
この場合、${local.name}
はSumomo
に置換され、出力は"Hello Sumomo!"
となります。
${ をリテラルとして使用する方法
しかし、時には${
をそのまま文字列として使用したい場合があります。このような場合、エスケープシーケンスを使用する必要があります。
Terraformでは、${
をリテラルとして表現するために、$
を重ねて$$
と記述します。
使用方法は以下の通りです:
locals {
name = "Sumomo"
}
output "greeting" {
value = "Hello $${local.name}!"
}
この出力結果は次のようになります:
Hello ${local.name}!
この結果から、$${
を使用することで${
をリテラルとして扱えることが分かります。
まとめ
Terraformでは$${
を使用することで、文字列補間とリテラルの${
を区別し、意図した通りの文字列を生成できます。
確認をした環境
- Terraform 1.9.2
参考