如何从 Terraform 中的地图中删除与键值匹配的值

Alb*_*sky 3 terraform

我有一个如下所示的示例地图,我正在尝试删除任何具有与“bong”匹配的 key2 值的帐户。

所以起始地图看起来像这样:

sample_map={
  account1 = {
      key1       ="foo"
      key2       ="bar"
  }
  account2 = {
      key1       ="bing"
      key2       ="bong"
  }
}
Run Code Online (Sandbox Code Playgroud)

最终结果应该是这样的:

new_map={
  account1 = {
      key1       ="foo"
      key2       ="bar"
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试操作以下 for 循环,但它仅在 var.exclude 匹配标签(不是键)时才有效。

new_map = { for k, v in var.sample_map : k => v if ! contains(var.exclude, k) }
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

如果我理解正确的话,你就快到了。它应该是:

contains(values(v), var.exclude)
Run Code Online (Sandbox Code Playgroud)

工作示例如下:


variable "sample_map" {

  default ={
    account1 = {
        key1       ="foo"
        key2       ="bar"
    }
    account2 = {
        key1       ="bing"
        key2       ="bong"
    }  
  }
}

variable "exclude" {
  default = "bong"
}


output "test" {
  value = { for k, v in var.sample_map: k => v if ! contains(values(v), var.exclude) }
}
Run Code Online (Sandbox Code Playgroud)

这使:

test = {
  "account1" = {
    "key1" = "foo"
    "key2" = "bar"
  }
}
Run Code Online (Sandbox Code Playgroud)