Terraform を使ってVPCやらIAMユーザを管理する際に一つのtfで大量にパラメータを管理するの大変そうって思って調べてたらfor_eachが比較的最近のバージョンで入ったらしく使ってみたのでメモ。loopで書くよりも取得自体は直感的にでもないけど可読性は確実に増すと思うやつ。
Resources - Configuration Language - Terraform by HashiCorp
公式ドキュメントはこの辺。
resource "aws_ssm_parameter" "ssm_parameter_app" { for_each = var.ssm_parameter_app_list name = "/${var.env}/${lookup(each.value, "name")}" value = lookup(each.value, "value") }
variable "ssm_parameter_app_list"{ type = map(map(string)) default = { param1 = { name = "param1" value = "xxxxxxxxxxxx" } param2 = { name = "param2" value = "xxxxxxxxxxxx" } ・ ・ param10 = { name = "param10" value = "xxxxxxxxxxxx" } } }
Terraformで超サクッとループでリソースを用意する方法 | Developers.IO
リストAからリストBを生成したいケースがTerraformを使ってると多いのでその辺いいやり方他にもたくさんあるので調べていきたい。(結果取得からの動的リスト京成なんかでIaCしたりするは難しそうだけど面白そう)