CloudFormation AWS :: EC2 :: Маршрут - PullRequest
1 голос
/ 08 июня 2019

Я создаю шаблон Cloudformation, и меня смущают некоторые концепции.Во-первых, нужно ли перетаскивать один объект Route на каждый отдельный маршрут, который нужно определить внутри RouteTable?

Или я могу просто добавить больше DestinationCidrBlock на тот же маршрут?

AWS::EC2::Route
PrivateRoute:
    Type: 'AWS::EC2::Route'
    Properties:
      RouteTableId: !Ref PrivateRouteTable
      InstanceId: !Ref EC2PublicServer
      DestinationCidrBlock: 0.0.0.0/0

1 Ответ

1 голос
/ 09 июня 2019

Нельзя поместить несколько значений в свойство DestinationCidrBlock .Он принимает только строку в соответствии с документацией .

К сожалению, сам ресурс AWS :: EC2 :: RouteTable не может содержать список маршрутов.Таким образом, вам нужно добавить столько ресурсов AWS :: EC2 :: Route, сколько необходимо включить в routess.

Возможно, возможно было бы использовать макрокоманду CloudFormation transform для создания несколькихМаршрут ресурсов из списка.Я не уверен, возможно ли это.


Обновление:

Я смог сделать это с помощью sample Explode macro

Я написал этот шаблон, и он работал нормально, создав пару маршрутов, указывающих на один и тот же Интернет-шлюз

AWSTemplateFormatVersion: "2010-09-09"
Transform: Explode

Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
    Description: VPC ID of the VPC in which to create the route table

  InternetGateway:
    Type: String
    Description: Internet gateway id

Mappings:
  CidrMap:
    Destination1: 
      Cidr: 180.1.2.0/24
    Destination2:
      Cidr: 200.1.1.0/24

Resources:

  RouteTable:
    Type: AWS::EC2::RouteTable
    Properties: 
      VpcId: !Ref VpcId

  Route:
    Type: AWS::EC2::Route
    ExplodeMap: CidrMap
    Properties:
      DestinationCidrBlock: "!Explode Cidr"
      GatewayId: !Ref InternetGateway
      RouteTableId: !Ref RouteTable
...