今回はlookup関数についてです。
■ lookup 関数とは
map のキーを指定してバリューを取り出すことができます。
lookup - Functions - Configuration Language | Terraform | HashiCorp Developer
■ 実例
locals {
vpcs2_map = {
"dev1" = "10.20"
"dev2" = "10.30"
"dev3" = "10.40"
"dev4" = "10.50"
}
name_map = {
"dev1" = "develop1"
"dev2" = "develop2"
"dev3" = "develop3"
"dev4" = "develop4"
}
}
resource "aws_vpc" "vpcs2_map" {
for_each = local.vpcs2_map
cidr_block = "${each.value}.0.0/16"
tags = {
"Name" = lookup(local.name_map, each.key)
}
}
上記の場合、
tags = {
"Name" = lookup(local.name_map, each.key)
}
の部分でlookup関数を使ってます。
local.name_mapのマップの中から、each.keyで指定したキーが存在すればvalueを返します。
そのため、
each.keyが"dev1"であれば、local.name_mapの"dev1"の値(="develop1")が取得できます。
尚、for_eachが受け取る値はlocal.vpc2_map のものですが、
local.name_map のキーをlocal_vpc2_map のキーと同じにしているため、
"develop1", develop2" ,"develop3" ,"develop4" を取得することが可能です。