我自己做了一些测试,我很确定这个问题是由你的
路线
,假设VPC中的其他所有内容都是正确的,因为未显示VPC和子网定义。
具体来说,您写道“RDS位于VPC A的私有A、私有B、对等A中”。这意味着RDS主机可能处于
这些子网中的任何一个子网
。您无法控制它,因为由RDS选择使用哪个子网。创建RDS时,您只能通过选择AZ来部分控制它。随后,对等路由表应覆盖所有这三个子网。实现这一目标的最简单方法是使用
VPC CIDR
范围:
resource "aws_route" "b_peer_a" {
route_table_id = aws_route_table.b_peer.id
destination_cidr_block = aws_vpc.a.cidr_block
vpc_peering_connection_id = aws_vpc_peering_connection.a_to_b.id
}
然后你还需要有一个
VPC A中的路由表
与所有子网的对等连接相关联:
resource "aws_route_table" "a_peer" {
vpc_id = aws_vpc.a.id
}
resource "aws_route_table_association" "a_peer" {
route_table_id = aws_route_table.a_peer.id
subnet_id = aws_subnet.a_peer.id
}
resource "aws_route_table_association" "a_private1" {
route_table_id = aws_route_table.a_peer.id
subnet_id = aws_subnet.a_private1.id
}
resource "aws_route_table_association" "a_private2" {
route_table_id = aws_route_table.a_peer.id
subnet_id = aws_subnet.a_private2.id
}
resource "aws_route" "a_peer_b" {
route_table_id = aws_route_table.a_peer.id
destination_cidr_block = aws_subnet.b_peer.cidr_block
vpc_peering_connection_id = aws_vpc_peering_connection.a_to_b.id
}