有没有办法在地形中连接元组?

is there a way to concat tuple in terraform?

variable "query_param" {
  type = list(string)
  default = [
    "hello",
    "one",
    "two"
  ]
}


locals {
  common_tags = flatten([
    for i in var.query_param: {
      "method.request.querystring.${i}" = false
    }

  ])
}

output name {
  value       = local.common_tags
  description = "description"
}

我有这段代码可以将变量(列表)迭代到局部变量(映射)。我得到了以下不想要的输出。

name = [
  {
    "method.request.querystring.hello" = false
  },
  {
    "method.request.querystring.one" = false
  },
  {
    "method.request.querystring.two" = false
  },
]

所需的输出是获取单个数组中的所有值。如下图

name = [
  {
    "method.request.querystring.hello" = false,
    "method.request.querystring.one" = false,
    "method.request.querystring.two" = false
  }
]

有什么办法可以实现吗?

我想你会想要这样的东西:

locals {
  common_tags = {
    for i in var.query_param :
    "method.request.querystring.${i}" => false
  }
}

以上代码的输出结果如下:

name = {
  "method.request.querystring.hello" = false
  "method.request.querystring.one" = false
  "method.request.querystring.two" = false
}

请注意,在这种情况下 name 本身不是数组。如果您愿意,可以执行以下操作:

locals {
  common_tags = [{
    for i in var.query_param :
    "method.request.querystring.${i}" => false
  }]
}

输出将是:

name = [
  {
    "method.request.querystring.hello" = false
    "method.request.querystring.one" = false
    "method.request.querystring.two" = false
  }
]