Terraform中如何使用Map值创建自定义字符串?
解决Terraform嵌套Map列表遍历中的字符串构建引号冲突
以下几种方法可以解决你遇到的双引号冲突问题:
转义内部双引号
在访问Map键的双引号前添加反斜杠转义,明确这是字符串内部的引号:locals { example = [ for var2 in var.some_list : { myString = "${var2.map[\"key1\"]}_${var2.map[\"key2\"]}" } ] }用单引号包裹Map键
Terraform支持用单引号引用Map的键,这样不会和外层字符串的双引号产生冲突:locals { example = [ for var2 in var.some_list : { myString = "${var2.map['key1']}_${var2.map['key2']}" } ] }使用
format函数构建字符串
借助Terraform内置的format函数,通过占位符拼接字符串,彻底避开引号嵌套问题:locals { example = [ for var2 in var.some_list : { myString = format("%s_%s", var2.map["key1"], var2.map["key2"]) } ] }使用字符串拼接运算符
+
直接用+运算符拼接多个字符串片段,不需要插值语法,自然避免引号冲突:locals { example = [ for var2 in var.some_list : { myString = var2.map["key1"] + "_" + var2.map["key2"] } ] }
内容的提问来源于stack exchange,提问作者N. J
相关产品推荐
相关产品推荐

