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

时间:2020-08-18 07:21:31

标签: terraform

我有一个类似下面的示例地图,并且正在尝试删除所有key2值与“ bong”匹配的帐户。

因此起始地图如下所示:

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

最终结果应如下所示:

new_map={
  account1 = {
      key1       ="foo"
      key2       ="bar"
  }
}

我尝试处理以下for循环,但只有在var.exclude匹配标签(而不是键)的情况下才有效。

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确的话,你几乎在那儿。应该是:

contains(values(v), var.exclude)

工作示例如下:


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

哪个给:

test = {
  "account1" = {
    "key1" = "foo"
    "key2" = "bar"
  }
}