我正在使用 CloudFormation 创建以下资源:
我已通过我的本地办公室手动创建了站点到站点 VPN。 我已手动创建中转网关并将我的 VPN 连接到它。 现在,由于我将使用 CloudFormation 创建 VPC,因此我想避免手动工作,让 VPC 与 Transit Gateway 相关联,并在 CloudFormation 脚本本身的路由表中传播路由。 请参考以下片段:
VPCTransitGateayAttachment:
Type: AWS::EC2::TransitGatewayAttachment
Properties:
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
TransitGatewayId: 'tgw-1234567890'
VpcId: !Ref VPC
#TransitGateWay Routes
TransitGateWayPublicRouteTableRoutes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
TransitGateWayPrivateRouteTable1Routes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable1
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
TransitGateWayPrivateRouteTable2Routes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable2
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
但是当我执行脚本时遇到以下错误。
The transitGateway ID 'tgw-1234567890' does not exist. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidTransitGatewayID.NotFound; Request ID: 30d31120-f9e2-4870-a378-55bc9a36f5bb)
对于 AWS::EC2::Route 资源。 我不明白是什么问题。 文档说明了 AWS::EC2::Route 的 Transit Gateway 选项。 我还缺少什么?
我在cloudformation中遇到了同样的问题,问题是路线必须等待
AWS::EC2::TransitGatewayAttachment
,我运行了cloudformation模板,其中所有需要注释TransitGatewayId参数的路线,然后取消注释路线,它起作用了。
有 文档 表明这是互联网网关附件所必需的,但我的测试显示,这也是 TransitGatewayAttachments 所必需的。
我们应该做的是添加一个 DependsOn ,这应该可以解决问题。
无需分两个阶段部署堆栈。相反,请在路由和 TGW 附件之间添加显式依赖关系。
例如,
TransitGatewayAttachment:
Type: AWS::EC2::TransitGatewayAttachment
Properties:
# ...
RouteToTransitGateway1:
Type: AWS::EC2::Route
DependsOn: TransitGatewayAttachment
Properties:
# ...
RouteToTransitGateway2:
Type: AWS::EC2::Route
DependsOn: TransitGatewayAttachment
Properties:
# ...