Terraform 可选 jsonencode 属性

Aar*_*ock 8 json terraform

好的,获取以下 terraform 片段:

variable "my_var1" {
  type    = string
  default = null
}
variable "my_var2" {
  type    = string
  default = null
}
output "my_out" {
  value = jsonencode({
    my_attribute1 = var.my_var1
    my_attribute2 = var.my_var2
  })
}
Run Code Online (Sandbox Code Playgroud)

我希望如果没有指定my_var1& my_var2,它们就不会出现在my_out任何内容中。(即输出将是{})但是当前的输出是:

my_out = {"my_attribute1":null,"my_attribute2":null}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?(最好不必直接切换到 json 文本中的字符串插值)

Aar*_*ock 10

我能够与当地人一起利用for 表达式来完成一些工作:

variable "my_var1" {
  type    = string
  default = null
}

variable "my_var2" {
  type    = string
  default = null
}

locals {
  attributes = {
    my_attribute1 = var.my_var1
    my_attribute2 = var.my_var2
  }
}

output "my_out" {
  value = jsonencode({ for k, v in local.attributes : k => v if v != null })
}
Run Code Online (Sandbox Code Playgroud)