【问题标题】:AWS VPC Route Table - Change default route tableAWS VPC 路由表 - 更改默认路由表
【发布时间】:2019-07-21 17:03:23
【问题描述】:

是否可以更改与 VPC 关联的路由表?我正在使用 CloudFormation 并创建了我自己的 RT 和与之关联的子网。但是,由于 VPC 使用的是默认路由表,并且它声称我没有显式关联子网,因此它们与主路由表相关联作为包罗万象。我显然做错了,因为我的子网与我想要的路由表相关联,但默认路由表似乎优先。

这表明子网是关联的:

这表示子网没有与路由表关联:

如果我将 IGW 路由添加到默认/主 RT,一切正常。不是我想要的。

更新

这是用于创建 VPC 和组件的 CloudFormation。问题是,如果在子网中启动了一个框,则尽管我的子网与我的自定义路由表显式关联,但仍会使用主路由表。

Resources:
  TransitVPC:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: !Ref TransitVpcCidr
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
      Tags:
      - Key: Name
        Value: Transit VPC
  TransitInternetGateway:
    Type: 'AWS::EC2::InternetGateway'
    Properties:
      Tags:
      - Key: Name
        Value: Transit Internet Gateway
    DependsOn:
    - TransitVPC
  TransitRouteTable:
    Type: 'AWS::EC2::RouteTable'
    Properties:
      VpcId: !Ref TransitVPC
      Tags:
      - Key: Name
        Value: Transit VPC RT
    DependsOn:
    - TransitVPC
  TransitIGWAttachment:
    Type: 'AWS::EC2::VPCGatewayAttachment'
    Properties:
      InternetGatewayId: !Ref TransitInternetGateway
      VpcId: !Ref TransitVPC
    DependsOn:
      - TransitVPC
      - TransitInternetGateway
  TransitSubnetA:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref TransitVPC
      CidrBlock: !Ref TransitSubnetACidr
      AvailabilityZone: !Ref TransitSubnetARegion
      Tags:
      - Key: Name
        Value: Transit VPC Subnet A
    DependsOn:
    - TransitVPC
  TransitSubnetARTAssoc:
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      RouteTableId: !Ref TransitRouteTable
      SubnetId: !Ref TransitSubnetA
  TransitSubnetB:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref TransitVPC
      CidrBlock: !Ref TransitSubnetBCidr
      AvailabilityZone: !Ref TransitSubnetBRegion
      Tags:
      - Key: Name
        Value: Transit VPC Subnet B
  TransitSubnetBRTAssoc:
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      SubnetId: !Ref TransitSubnetB
      RouteTableId: !Ref TransitRouteTable
  TransitIGWRoute:
    Type: 'AWS::EC2::Route'
    Properties:
      RouteTableId: !Ref TransitRouteTable
      DestinationCidrBlock: !Ref FinalGatewayCidr
      GatewayId: !Ref TransitInternetGateway
    DependsOn:
    - TransitIGWAttachment

【问题讨论】:

    标签: amazon-web-services routetable


    【解决方案1】:

    最好通过 CloudFormation创建整个 VPC,包括:

    • VPC
    • 互联网网关
    • 子网
    • 路由表
    • 路由表关联

    这样,可以保证在将来再次部署时以相同的方式工作。此外,在堆栈内引用 VPC 的所有组件很容易(而不是必须引用在堆栈外部创建的资源)。

    或者,您的模板可以创建自己的路由表(应该使用它来代替现有的路由表),然后创建一个子网关联来配置您的新子网使用新的路由表。这样一来,默认路由表将不会被使用,因为子网只有在没有专门分配给路由表时才会使用默认路由表。

    【讨论】:

    • 这就是我正在做的事情,但似乎主路由表优先于新路由表,并且似乎没有办法(到目前为止我已经找到)通过 CloudFormation 使我的自定义路由表成为主路由表。
    • 我将使用用于 VPC 的 CloudFormation 更新帖子。问题是当我旋转一个盒子时,由于 OP 中列出的关联问题,我无法到达它。
    • 一般来说,最好避免使用默认路由表,因为它没有明确定义关系。
    • 我真的很想避免将自定义路由表设置为主要路由表,但这是目前我可以在我正在处理的工作上取得任何进展的唯一方法,直到我/有人可以帮助解决原因主路由表隐含地包括我与自定义路由表显式关联的子网。
    • 我向Transit Subnet A 添加了一个实例,并且可以通过 SSH 连接到该实例。我将TransitIGWRoute.DestinationCidrBlock 设置为0.0.0.0/0。您还可以考虑在公共子网配置上设置MapPublicIpOnLaunch = True
    猜你喜欢
    • 2014-04-09
    • 2019-01-21
    • 2020-08-31
    • 2016-03-09
    • 2021-06-16
    • 2022-01-18
    • 1970-01-01
    • 2022-12-13
    • 2012-03-17
    相关资源
    最近更新 更多