Вызов конкретных выходных данных for_each - PullRequest
0 голосов
/ 27 сентября 2019

Я только начинаю использовать циклы for_each и, насколько я понимаю, for_each отличается от count в том смысле, что подсчитывает индексы численно для выходных данных aws_transfer_key.transfer_key [1] vs for_each выводит aws_transfer_key.transfer_key ["value"].

Как позже вызвать вывод значения for_each?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019
Блок

A resource или data с набором аргументов count отображается в выражениях в виде списка, поэтому вы можете обращаться к его экземплярам с помощью [0], [1] и т. Д.

Аналогично, блок resource или data с набором аргументов for_each отображается в выражениях как map , поэтому вы можете обращаться к его экземплярам с помощью ["foo"], ["bar"] и т. Д.

В обоих случаях коллекция состоит из объектов, соответствующих схеме типа ресурса, поэтому вы можете следовать этому с помощью синтаксиса .attribute для доступа к отдельным атрибутам.

Итак, сначала возьмите тип и имя ресурса,aws_transfer_key.transfer_key, которая является картой.Затем ["value"], чтобы получить доступ к нужному экземпляру с карты.Затем .foo для доступа к атрибуту "foo".Все вместе, это aws_transfer_key.transfer_key["value"].foo.

Если вы хотите получить доступ к всем атрибутам "foo" во всех экземплярах, вы можете проецировать карту объектов в карту строкиспользуя выражение for :

{ for k, v in aws_transfer_key.transfer_key : k => v.foo }
0 голосов
/ 27 сентября 2019

Из примера здесь

resource "aws_security_group" "example" {
  name = "example" # can use expressions here

  dynamic "ingress" {
    for_each = var.service_ports
    content {
      from_port = ingress.value
      to_port   = ingress.value
      protocol  = "tcp"
    }
  }
}

Вы ссылаетесь на имя динамического блока, в данном случае это ingress.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...