#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 }