web-dev-qa-db-fra.com

Comment obtenir un objet à partir d'une liste d'objets dans Terraform?

J'ai la liste suivante de variables d'objets:

variable "objects" {
  type = "list"
  description = "list of objects
  default = [
      {
        id = "name1"
        attribute = "a"
      },
      {
        id = "name2"
        attribute = "a,b"
      },
      {
        id = "name3"
        attribute = "d"
      }
  ]
}

Comment obtenir un élément avec id = "name2"?

13
votaroe

Vous obtenez la carte avec id = "name2" avec l'expression suivante:

var.objects[index(var.objects.*.id, "name2")]

Pour un test rapide, exécutez le one-liner suivant dans la console terraform:

[{id = "name1", attribute = "a"}, {id = "name2", attribute = "a,b"}, {id = "name3", attribute = "d"}][index([{id = "name1", attribute = "a"}, {id = "name2", attribute = "a,b"}, {id = "name3", attribute = "d"}].*.id, "name2")]
1
JRoppert