Terraform - 如果在 for_each 内。我可以过滤 for_each 吗?

dc1*_*078 14 amazon-web-services terraform terraform-provider-aws

通过以下内容,我可以循环遍历资源块,轻松地将路由表关联添加到“所有”子网。但是,我只需要为我的公共子网创建关联。

我怎样才能使这个“if”语句起作用?或者任何其他方式来过滤each.value.class == "pub"此事。

resource "aws_route_table_association" "rtb-pub" {
  for_each =  local.subnets_map 
  if each.value.class == "pub"    ## <---- how?

  route_table_id = aws_route_table.rtb-pub.id
  subnet_id      = aws_subnet.map["${each.value.subnet}"].id
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Mar*_*cin 20

这具体取决于您的local.subnets_map. 但for_each应该类似于以下内容:

resource "aws_route_table_association" "rtb-pub" {

  for_each =  {for key, val in local.subnets_map: 
               key => val if val.class == "pub"}

  route_table_id = aws_route_table.rtb-pub.id
  subnet_id      = aws_subnet.map["${each.value.subnet}"].id
}
Run Code Online (Sandbox Code Playgroud)