Шаблон AWS Cloudformation для AWS ::APIGateway::Ресурс: Как создать динамический ключ для RequestParameter?

#amazon-web-services #templates #amazon-cloudformation #aws-api-gateway #querystringparameter

#amazon-web-services #шаблоны #aws-cloudformation #aws-api-gateway #querystringparameter

Вопрос:

Я создаю вложенный шаблон cloudformation, который создает AWS::ApiGateway::Method . Этот метод содержит строки запросов с именами, полученными в качестве параметров из родительского стека, примерно так:

 Parameters:
    #...other parameters
    queryStringName:
        Type: String
    queryStringMandatory
        Type: String
        AllowedValues: [true,false]
Resources:
    ApiGatewayMethod:
        Type: 'AWS::ApiGatewayMethod::Method'
        Properties:
        #... other properties
        RequestParameters:
            # here I want to inject somehow the queryStringName into the key definition
            method.request.querystring.{$queryStringName}: !Ref queryStringMandatory #doesnt work
  

Проблема в том, что текущий способ определения строки запроса выглядит следующим образом:

 RequestParameters:
  method.request.querystring.queryStringName: true
  

где true указывает, является ли строка запроса обязательной. Используя этот способ, имя строки запроса находится в левой части (часть определения ключа), и вы не можете использовать там встроенные функции или !Ref .
Есть ли что-то, чего мне не хватает, или есть обходной путь для этого?

Комментарии:

1. Я не знаю об «обходном пути». Для меня это скорее пример использования AWS Cloud Development Kit. Вы можете использовать стандартный код, например, Python, для динамической генерации шаблона CloudFormation, а затем внедрить его на этапе развертывания, чего вы и добиваетесь. Что-то вроде правила AWS, создающего его для вас, или и микросервис возвращает правильный шаблон CF в зависимости от ваших потребностей: aws.amazon.com/cdk/resources