Terraform NAT Gateway для настройки таблицы маршрутов
Я пытаюсь настроить несколько своих частных шлюзов 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? И если бы это было так, что мне нужно было бы ввести, чтобы подключить только один NAT-шлюз в Terraform? Был бы признателен за любую помощь.
ОБНОВЛЕНИЕ: для всех, у кого есть вопросы по этому сценарию, я обновил код для тех, кто ищет ответы.
1 ответ
Следующее неверно в
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)
Причина в том, что у вас будет столько же таблиц маршрутов, сколько ваших частных подсетей.