跨AWS账户使用CloudFormation添加VPC对等连接路由表条目问询
嘿,恭喜你已经成功搭建了跨账户的自动接受VPC对等连接!现在就差给两边的路由表添上关键的路由条目,让流量能真正通过对等连接跑起来。结合你提到的第二个AWS::EC2::VPCPeeringConnection模板,我来一步步给你讲清楚怎么配置:
1. 先搞懂路由条目的核心逻辑
简单来说,你需要做双向路由配置:
- 给请求方VPC的路由表添加一条指向接受方VPC CIDR段的路由,目标就是你创建的VPC对等连接
- 给接受方VPC的路由表添加一条指向请求方VPC CIDR段的路由,目标同样是这个对等连接
只有这样,两边VPC内的资源才知道要通过对等连接访问对方的网段。
2. CloudFormation 配置示例
假设你已经有了自动接受的VPC对等连接资源(对应你提到的第二个模板),我们直接在这个基础上添加路由资源:
2.1 请求方账户的模板(配置请求方VPC路由)
Resources: # 你已有的跨账户VPC对等连接资源 MyCrossAccountVpcPeering: Type: AWS::EC2::VPCPeeringConnection Properties: PeerOwnerId: "123456789012" # 替换为接受方账户ID PeerRoleArn: "arn:aws:iam::123456789012:role/AllowVpcPeeringAcceptRole" # 接受方用于自动接受的IAM角色ARN PeerVpcId: "vpc-abcdefghijklmnopq" # 替换为接受方VPC ID VpcId: "vpc-1234567890abcdefg" # 替换为请求方VPC ID # 给请求方路由表添加指向接受方VPC的路由 RequestorVpcRouteToPeer: Type: AWS::EC2::Route Properties: RouteTableId: "rtb-0123456789abcdefg" # 替换为请求方VPC关联的路由表ID DestinationCidrBlock: "10.2.0.0/16" # 替换为接受方VPC的CIDR段 VpcPeeringConnectionId: !Ref MyCrossAccountVpcPeering # 引用上面创建的对等连接资源
2.2 接受方账户的模板(配置接受方VPC路由)
因为是跨账户场景,更稳妥的方式是在接受方自己的CloudFormation模板里配置这条路由(如果请求方的角色拥有接受方账户的ec2:CreateRoute权限,也可以在请求方模板里创建,但推荐分开维护):
Resources: # 给接受方路由表添加指向请求方VPC的路由 AcceptorVpcRouteToPeer: Type: AWS::EC2::Route Properties: RouteTableId: "rtb-abcdefghijklmnopq" # 替换为接受方VPC关联的路由表ID DestinationCidrBlock: "10.1.0.0/16" # 替换为请求方VPC的CIDR段 VpcPeeringConnectionId: "pcx-0123456789abcdefg" # 替换为对等连接的ID,可通过参数传入或从请求方模板的输出获取
3. 几个必须注意的细节
- 路由表与子网关联:确保你添加路由的路由表已经和VPC内的子网绑定,否则子网里的实例无法使用这条路由
- 权限验证:如果要在请求方模板里创建接受方的路由,必须确认
PeerRoleArn对应的角色拥有接受方账户的ec2:CreateRoute权限 - 安全组/网络ACL放行:别忘记配置两边的安全组和网络ACL,允许对等VPC的CIDR段流量进出,否则路由通了也无法正常通信
- CIDR不重叠:两边VPC的CIDR段绝对不能重叠,否则路由条目会创建失败或无法生效
内容的提问来源于stack exchange,提问作者Sam Hammamy
相关产品推荐
相关产品推荐

