Формирование облака AWS несколько записей маршрута с параметрами

#amazon-cloudformation #aws-cloudformation-custom-resource

Вопрос:

Для шаблона cloudformation требуется, чтобы в таблице маршрутов было несколько записей маршрута. AWS::EC2::маршрут может создать только одну запись маршрута. Есть ли способ создать несколько записей маршрута, которые зависят от параметров? Пример в параметре будет запрошена запятая отдельно или список cidr назначения, а целью будет IGW

Параметры DestinationCidrList: Тип: Строка По умолчанию: 172.16.2.232, 10.4.14.332

Шаблон cfn должен создавать маршруты в routetable для IGW, этот список назначения может иметь несколько IP-адресов назначения

Ответ №1:

Я получил решение с помощью макросов AWS PyPlate https://github.com/awslabs/aws-cloudformation-templates/tree/master/aws/services/CloudFormation/MacrosExamples/PyPlate/

 AWSTemplateFormatVersion: "2010-09-09"

Parameters:
  RouteEntries:
    Type: CommaDelimitedList
    Default: "10.2.3.10/32,0.0.0.0/32"

  ResourceName:
    Type: CommaDelimitedList
    Default: "ip1,ip2"

Transform: [PyPlate]

Resources: |
  #!PyPlate
  output = {}
  for ip in params['RouteEntries']:
    for name in params['ResourceName']:
      output[name] = { "Type": "AWS::EC2::Route", "Properties": {"RouteTableId": "<RT ID>" , "DestinationCidrBlock": ip, "GatewayId": "<IGW ID>" }}