将json作为值放入映射的Terraform语法

将json作为值放入映射的Terraform语法,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我不熟悉地形。我有一个json对象,我需要将其设置为terraform映射中的值,以便使用json作为值创建资源 .tf文件在该部分中如下所示: ... config_overrides = { override_1 = "True" override_2 = '{"key1":"val1","key2":"val2"}' #thi

我不熟悉地形。我有一个json对象,我需要将其设置为terraform映射中的值,以便使用json作为值创建资源

.tf文件在该部分中如下所示:

...

      config_overrides = {
        override_1      = "True"
        override_2      = '{"key1":"val1","key2":"val2"}' #this is the json object
    }

...

但是,terraform lint命令
terraform lint-check
在json对象上失败

$terraform fmt-检查
错误:无效字符
在myterraform.tf第28行的参考资料中:
28:override_2='{“key1”:“val1”,“key2”:“val2”}'
单引号无效。使用双引号(“)将字符串括起来。
错误:无效的表达式
在myterraform.tf第28行的参考资料中:
28:override_2='{“key1”:“val1”,“key2”:“val2”}'
应为表达式的开头,但发现无效的表达式标记。

我尝试了许多不同的变体,但无法让过梁接受。请告知。

您需要在值
中使用
\
不起作用

config_overrides = {
  override_1 = "True"
  override_2 = "{\"key1\":\"val1\",\"key2\":\"val2\"}"
}
您可以使用,以便Terraform本身负责生成JSON,您只需担心数据结构:

  override_2 = jsonencode({
    "key1": "val1",
    "key2": "val2",
  })
Terraform的对象表达式语法恰好与JSON相似,因此这里的
jsonencode
的参数看起来很像它将转换为的JSON字符串,但这实际上只是一个普通的Terraform表达式,因此您可以在其中包含任何参数。例如:

  override_2 = jsonencode({
    "key1": "val1",
    "key2": var.any_variable,
  })