これを、
variable "hoge" { default = [ { name = "aaa" items = [ 111, 222, ] }, { name = "bbb" items = [ 333, 444, ] }, ] }
こうしたかった
[ { "item" = 111 "name" = "aaa" }, { "item" = 222 "name" = "aaa" }, { "item" = 333 "name" = "bbb" }, { "item" = 444 "name" = "bbb" }, ]
0.12 で追加された for が Python の内包表記っぽい感じだったので下記のように書けるかと試してみるものの・・
output "hoge" { value = [ for a in x.arr for x in var.hoge : { name = x.name, arr = a } ] }
ダメでした。
Error: Invalid 'for' expression on main.tf line 22, in output "hoge": 22: value = [ for h in var.hoge for item in h.items : { name = h.name, item = item } ] For expression requires a colon after the collection expression.
次のように for をネストしてリストのリストを作って flatten すれば OK です。
output "hoge" { value = flatten([ for h in var.hoge : [ for item in h.items : { name = h.name, item = item } ] ]) }
もっとスマートな方法ありそうと思って Issue を漁ってみたところ・・・同じような方法が紹介されていました。