Создание политики на основе пути к папке и json внутри папки

#terraform #terraform-provider-aws

Вопрос:

У меня есть пути в terraform, для которых я хочу подготовить список сопоставлений на основе папки —

Так сказать —

  • Безопасность
    • Файл1
  • Инфраструктура
    • Файл2
 locals {
paths = {
    for ou in var.core_ous : ou => "${path.module}/policies/${lower(ou)}"
  }

  policies = { 
    for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
      ou = f[0]
      file = fileset(lookup(f[1],f[0],""),"*.json") 
    }
  }
}
 

Но я получаю ошибку, как при попытке создать список путей на основе папки, как —

 ╷
│ Error: Invalid function argument
│
│   on modules/organizations/locals.tf line 21, in locals:
│   21:     for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
│     ├────────────────
│     │ local.paths is object with 2 attributes
│
│ Invalid value for "sets" parameter: a set or a list is required.
 

Я проверил вывод paths , и он идет как —

 Changes to Outputs:
    files = {
        Infrastructure = "modules/organizations/policies/infrastructure"
        Security       = "modules/organizations/policies/security"
    }
 

как я могу выполнить цикл только на основе var.core_ous, чтобы создать карту, подобную на основе файлов json —

  • Безопасность
    • путь к файлу 1
    • путь к файлу 2
  • Инфраструктура
    • путь к файлу 3
    • путь к файлу 4

а затем выполните этот цикл, чтобы применить его к политике как —

 policies = { 
    for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
      ou = f[0]
      file = fileset(lookup(f[1],f[0],""),"*.json") 
    }
  }
 

Как мы можем этого достичь ?

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

1. Что такое var.core_ous ?

2. @Marcin Это просто список строк core_ous = [«Безопасность»,»Инфраструктура»], которые совпадают с папками, из которых я пытаюсь вывести файлы json политик для чтения .