#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