Terraform 可选的 jsonencode 属性

8

好的,看下面这段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
  })
}

我很乐意这样做,如果my_var1my_var2中有任何一个未指定,那么它们都不会出现在my_out中。(即输出将为{}) 但是目前的输出结果如下:
my_out = {"my_attribute1":null,"my_attribute2":null}

有没有一种方法可以做到这一点?(最好不必直接在json文本中切换为字符串插值)

1个回答

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 })
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接