CloudFormation嵌套堆栈参数从String / ComaDelimitedList转换为“映射键-值对”

时间:2019-01-23 14:12:45

标签: amazon-web-services amazon-cloudformation aws-api-gateway

我正在将参数从cloudformation主堆栈传递到嵌套堆栈,以获取'AWS :: ApiGateway :: Method'资源的 RequestParameters 属性。

受支持的CloudFormation参数类型(DataType)是: String Number List CommaDelimitedList 和AWS -此处指定的特定参数类型:

是否可以将参数值设置为 String (或 CommaDelimitedList ),并在嵌套堆栈中将其转换为映射键-值对,作为 RequestParameters 'AWS :: ApiGateway :: Method'资源的属性需要它吗?

键值对的映射如下:

Resources:
  LambdaEndpointMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RequestParameters:
        method.request.querystring.param1 : true
        method.request.querystring.param2 : true
        method.request.querystring.param3 : true

我已经尝试指定参数类型String并将所有键值对作为逗号分隔的字符串传递,然后使用Fn :: Split内在函数来拆分字符串,但是cloudformation会报错Value of property RequestParameters must be an object

这是我的嵌套堆栈模板:

Parameters:
  RequestParametersString:
    Description: List of request parameters
    Type: String
    Default: ''

...

Conditions:
  EmptyRequestParametersString: !Equals [ !Ref RequestParametersString, '' ]

...

Resources:
  LambdaEndpointMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RequestParameters: !If [ EmptyRequestParametersString, 'AWS:NoValue', !Split [',', !Ref RequestParametersList] ]

这是我的主模板:


  MyNestedStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: ...
      Parameters:
         ...
        RequestParametersString: 'method.request.querystring.param1 : true, method.request.querystring.param2 : true, method.request.querystring.param3 : false'

有什么方法可以在cloudformation上实现这一目标,或者有人可以提供一种解决方案,如何将两个键值对从主堆栈传递到子堆栈作为参数?

0 个答案:

没有答案