цикл терраформирования с условным ключом внутри объекта

#loops #for-loop #terraform #terragrunt

Вопрос:

давайте предположим, что у нас есть эта переменная:

 foobars = {  "first" : {  specialkeys: [  "a",  "b",  "c"  ]  }  "second" : {}  }   

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

Это то, что я пробовал, но он жалуется, что

 This object does not have an attribute named specialkeys  

Мои попытки:

 data = flatten([  for k, v in var.foobars : [  for sk in v.specialkeys : {  special = sk,  foo = k  }  ]  ])  

Ответ №1:

Я полагаю, что вы хотели бы сделать следующее:

 data = flatten([  for k, v in local.foobars :  [  for sk, sv in v :  [  for spec in sv : {  special = spec,  foo = k  }  ]  ]  ])  

Это приведет к чему-то вроде этого:

 [  {  "foo" = "first"  "special" = "a"  },  {  "foo" = "first"  "special" = "b"  },  {  "foo" = "first"  "special" = "c"  }, ]