Преобразовать список в карту и объединить значения terraform

#terraform

#terraform

Вопрос:

Я пытаюсь преобразовать список элементов в карту. Ключ будет соответствовать ключу в элементе, и значение должно создать список добавлений к списку, если ключ уже существует.

Может быть, пример будет более понятным

 variable "list" {
  type = list(map(string))
  default = [
    { a : "a", k : "k1" },
    { a : "b", k : "k1" },
    { a : "c", k : "k1" },
    { a : "d", k : "k2" },
    { a : "e", k : "k2" }
  ]
}
    
// Output wanted
// {
//  "k1" : [{a: "a"}, {a: "b"}, {a: "c"}],
//  "k2" : [{a: "d"}, {a: "e"}]
// }
  

Спасибо

Ответ №1:

Вы можете взглянуть на следующее:

 variable "list" {
  type = list(map(string))
  default = [
    { a : "a", k : "k1" },
    { a : "b", k : "k1" },
    { a : "c", k : "k1" },
    { a : "d", k : "k2" },
    { a : "e", k : "k2" }
  ]
}

output "test" {

  value = {for item in var.list:
            item["k"] => {a = item["a"]}...
          }
}
  

Приведенный выше код использует оператор трех точек и выдает:

 test = {
  "k1" = [
    {
      "a" = "a"
    },
    {
      "a" = "b"
    },
    {
      "a" = "c"
    },
  ]
  "k2" = [
    {
      "a" = "d"
    },
    {
      "a" = "e"
    },
  ]
}