如何从Terraform中的地图中移除与键值匹配的值 [英] How to remove values from a map in Terraform that match a key value

查看:16
本文介绍了如何从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) }

推荐答案

如果我理解正确的话,您几乎就到那里了。应该是:

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

这篇关于如何从Terraform中的地图中移除与键值匹配的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆