for_eachで作成したリソースは、どのようにstateを指定するか戸惑ったのでメモです。
リソースの種類.リソース名["for_eachのkey"]
で指定するみたいです。
もともとそれぞれ別リソースを作成していた場合にfor_eachで書き直した場合を考えてみます。
before
resource "aws_ssm_parameter" "foo" { name = /foo value = "example-foo" type = "String" } resource "aws_ssm_parameter" "bar" { name = /bar value = "example-bar" type = "String" }
after
locals { params = [ "foo", "bar", ] } resource "aws_ssm_parameter" "list" { for_each = toset(local.params) //listをtosetでfor_eachで使えるようにします。keyもvalueも同じ値が入ります。 name = "/${each.key}" value = "example-${each.key}" type = "String" }
state mv
こんな感じで指定します。
$ terraform state mv aws_ssm_parameter.foo 'aws_ssm_parameter.list["foo"]' $ terraform state mv aws_ssm_parameter.bar 'aws_ssm_parameter.list["bar"]'