Routes Terraform-多个专用子网-添加新子网会改变路由表和路由表关联

Routes Terraform-多个专用子网-添加新子网会改变路由表和路由表关联,routes,terraform,terraform-provider-aws,terraform0.12+,private-subnet,Routes,Terraform,Terraform Provider Aws,Terraform0.12+,Private Subnet,上述部分工作正常,我可以轻松创建多个动态私有子网,并根据需要使用所需的tag.Name和variables.tf中的其他标记 ######################### # Private Subnets # ######################### resource "aws_subnet" "private" { vpc_id = var.vpc_id for_each = var.priv

上述部分工作正常,我可以轻松创建多个动态私有子网,并根据需要使用所需的
tag.Name
和variables.tf中的其他标记

#########################
# Private Subnets       #
#########################

resource "aws_subnet" "private" {
  vpc_id            = var.vpc_id
  for_each = var.private_subnets
  cidr_block        = each.value.cidr_block
  availability_zone = each.value.availability_zone
  tags = merge(
   {
    "Name" = format(
        "%s", each.key
      )
   },
   each.value.tags
  )
}
在上面的部分中,我想创建与私有子网数量相同数量的路由表,并将其与
nat\u网关
关联。如果我对每个公共子网使用
,问题是我想要使用的标记将不起作用,与公共子网相比,可能有多个私有子网,这会在
nat\u网关
分配时产生问题

resource "aws_route_table" "private" {
 count = length(var.private_subnets)
  vpc_id = var.vpc_id
 route {
        cidr_block     = "0.0.0.0/0"
        nat_gateway_id = element(values(aws_nat_gateway.main)[*].id, count.index)
  }
  tags = merge(
   element(values(aws_subnet.private)[*].tags, count.index),
   {
    "Name" = format(
     "rt_%s",  element(values(aws_subnet.private)[*].tags["Name"], count.index)
      )
   }
  )
}
上面的代码工作正常,但是如果我引入一个新的私有子网,
route\u table\u association
route\u table
将进行修改,从而破坏以前映射的路由、关联

如何创建新的子网而不破坏以前与route_表、关联相关的映射

resource "aws_route_table_association" "private" {
  depends_on = [aws_subnet.private]
  count = length(var.private_subnets) 
  subnet_id = element(values(aws_subnet.private)[*].id, count.index)
  route_table_id = element(aws_route_table.private.*.id, count.index)
}