我正在将参数从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上实现这一目标,或者有人可以提供一种解决方案,如何将两个键值对从主堆栈传递到子堆栈作为参数?