Aws vpc таблица маршрутов по умолчанию в CloudFormation

19

Я что-то упустил, но нет ли способа добавить маршрут через CloudFormation в таблицу маршрутов по умолчанию, которая поставляется с VPC?

Спящий Смит
источник
Пожалуйста, обратитесь к следующему обсуждению на ту же тему. forums.aws.amazon.com/thread.jspa?threadID=97060
Чиранга Алвис

Ответы:

25

Нет, ты не можешь, в любом случае не к чему обращаться (например, к логическому идентификатору). Просто создайте свою собственную главную таблицу ;-).

Это , вероятно , одна из причин , он не может быть использован:

Один из способов защиты вашего VPC - это оставить основную таблицу маршрутов в исходном состоянии по умолчанию (только с локальным маршрутом) и явно связать каждую новую подсеть, которую вы создаете, с одной из созданных вами пользовательских таблиц маршрутов. Это гарантирует, что вы должны явно контролировать, как маршрутизируется исходящий трафик каждой подсети .

user2256978
источник
3
Звучит как рутина.
Спящий Смит
3
Думаешь это плохо? Подождите, пока вы не разделите свои шаблоны так, чтобы каждый из них нес только одну ответственность, с родительским шаблоном, тянущим меньшие в больший стек ... теперь вы должны передать и VPC, и RouteTable из одного шаблона всем другим вашим дочерним элементам. шаблоны. И это несмотря на то, что RouteTable уже знает, в какой VPC он входит, но вы не можете извлечь из него эту информацию. </
Rant
3
@DanielM Звучит как работа для github.com/SleeperSmith/Aws-Lego . Похоже, у нас такая же хватка. : D хахахаха.
Спящий Смит
Дополнительная информация на - forums.aws.amazon.com/thread.jspa?threadID=97060
ALex_hha
1

Вы можете определить каждый компонент самостоятельно на тот случай, если вам потребуется реализовать эту настройку через CloudFormation. Просто создайте свой собственный VPC, интернет-шлюз, подсеть и таблицу маршрутов. Затем вам нужно явно объявить RouteTableAssociation для конкретной подсети и создать общедоступный маршрут для этой таблицы. Вот пример

AWSTemplateFormatVersion: '2010-09-09'
Description: Example
Resources:
  myInternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: "Name"
          Value: "a_gateway"

  myVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/24
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default

  # Attach Internet gateway to created VPC
  AttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId:
        Ref: myVPC
      InternetGatewayId:
        Ref: myInternetGateway

  # Create public routes table for VPC
  myPublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref myVPC
      Tags:
        - Key: "Name"
          Value: "public_routes"

  # Create a route for the table which will forward the traffic
  # from the gateway
  myDefaultPublicRoute:
    Type: AWS::EC2::Route
    DependsOn: AttachGateway
    Properties:
      RouteTableId: !Ref myPublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref myInternetGateway

  # Subnet within VPC which will use route table (with default route)
  # from Internet gateway
  mySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: ""
      CidrBlock: 10.0.0.0/25
      MapPublicIpOnLaunch: true
      VpcId:
        Ref: myVPC

  # Associate route table (which contains default route) to newly created subnet
  myPublicRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref myPublicRouteTable
      SubnetId: !Ref mySubnet

Таким образом, вы сможете использовать созданную таблицу маршрутов (в приведенном выше примере она используется для пересылки трафика из Интернет-шлюза)

Самый разыскиваемый
источник