Terraform NAT网关设置路由表



我正试图在路由表中设置我的专用多个NAT网关,但我对我缺少的内容感到困惑。有人能帮我查一下我遗漏的东西吗?

这是我的路线表:

resource "aws_route_table" "private" {
count                     = length(var.private_subnet_cidr_blocks)
vpc_id                    = aws_vpc.main_vpc.id
route {
cidr_block              = "0.0.0.0/0"
nat_gateway_id          = aws_nat_gateway.nat-gw[count.index].id
}
tags = {
Name = "private-rtable-${count.index+1}"
}
}
resource "aws_route_table_association" "private" {
count                     = length(var.private_subnet_cidr_blocks)
subnet_id                 = element(aws_subnet.private.*.id, count.index)
route_table_id            = element(aws_route_table.private.*.id, count.index)
}

这是我的NAT EIP和NAT网关:

resource "aws_eip" "nat-eip" {
count                     = length(data.aws_availability_zones.available.names)
vpc                       = true
}
resource "aws_nat_gateway" "nat-gw" {
count                     = length(data.aws_availability_zones.available.names)
allocation_id             = element(aws_eip.nat-eip.*.id, count.index)
subnet_id                 = element(aws_subnet.public.*.id, count.index)
tags = {
Name = "NAT-GW-${count.index+1}"
}
}

我以前想将每个NAT网关连接到我的路由表,目的地为0.0.0.0/0,但这无法实现。有没有一种方法可以让你的NAT网关在你的体系结构中高度可用,或者你应该只连接一个NAT网关?如果是这样的话,我需要输入什么才能使它在Terraform中只连接一个NAT网关?如果有任何帮助,我将不胜感激。

更新:对于任何对此场景有疑问的人,我为其他正在寻找答案的人更新了代码。

以下内容在aws_route_table.private:中不正确

count                     = var.private_subnet_cidr_blocks

应该是:

count                     = length(var.private_subnet_cidr_blocks)

还有您的aws_route_table_association.private而不是:

route_table_id            = aws_route_table.private.id

应该有:

route_table_id            = element(aws_route_table.private.*.id, count.index)

原因是您将拥有与您的私有子网一样多的路由表。

相关内容