каждое.значение не может быть использовано в этом контексте

#amazon-web-services #azure #for-loop #foreach #terraform

#amazon-веб-сервисы #лазурь #для-петли #инструкция foreach #терраформирование

Вопрос:

Я получаю следующую ошибку

 Error: each.value cannot be used in this context  on main.tf line 11, in locals:  11: resourcelist = {for r in local.vnetlist : r.region =gt; each.value }  

Ссылка на «each.value» использовалась в контексте, в котором она недоступна, например, когда конфигурация больше не содержит значение в выражении «for_each».

Удалите эту ссылку на каждое значение.в вашей конфигурации, чтобы обойти
эту ошибку.

 locals {  vnetlist = csvdecode(file("./title.csv"))  vnetnames = ([for vnets in lookup(data.azurerm_resources.spokes, "resources", []) : lookup(vnets, "name")])      for_each = toset(vnetnames)  resourcelist = {for r in local.vnetlist : r.region =gt; each.value }  }  output "mybranch" {  value = local.resourcelist }  

Комментарии:

1. for_each Мета-аргумент недопустим в locals блоке. Вам нужно удалить это, а затем resourcelist соответствующим образом обновить свой. В этой конкретной ситуации вы пытаетесь совместно повторить vnetlist и vnetname . Вероятно, вам нужно построить карту между ними с помощью преобразования данных. Нам нужно увидеть фрагмент примера vnetlist , чтобы помочь в дальнейшем.

2. vnetlist = csvdecode(файл(«./final.csv»)) Это csv-файл,который имеет следующие значения Имя,размер, регион,, bbbb,, cccc,, dddd Мне нужно перебрать значения в столбце регион и заменить его списком имен vnetname, которые я получаю из блока ресурсов данных

Ответ №1:

В каждом.ключ и каждое.значение являются атрибутами для мета-аргумента for_each, а не для.

Я думаю, тебе нужно что-то подобное :

 for_each = toset(vnetnames)  resourcelist = { for k, v in local.vnetlist : k =gt; v.region }