CloudFormation-Tansit网关的路由表路由传播

时间:2019-12-11 13:26:05

标签: amazon-web-services amazon-cloudformation

我正在使用CloudFormation创建以下资源:

  • VPC
  • 两个公共子网
  • 两个私有子网
  • 子网的路由表

我已经与本地办公室手动创建了站点到站点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 资源。 我无法理解问题所在。 document声明了Transit Gateway for AWS :: EC2 :: Route的选项。 我在这里还想念什么?

1 个答案:

答案 0 :(得分:0)

我在cloudformation中遇到了同样的问题,问题是路线必须等待AWS::EC2::TransitGatewayAttachment,我用需要TransitGatewayId参数注释的所有路线运行cloudformation模板,然后取消注释路线,并且它奏效了。

Internet网关附件需要documentation,但我的测试表明,TransitGatewayAttachments也需要此。

我们应该做的是添加一个DependsOn,这样就可以解决问题。