【发布时间】:2020-06-28 11:08:33
【问题描述】:
问题的范围:
AWS CodeBuild,ParametersOverrides 部分
Using Parameter Override Functions with CodePipeline Pipelines
1) 我可以将字符串传递给 ParameterOverrides, 然后将它们传递给嵌套堆栈,如下所述
-创建字符串参数
-将其传递给 AWS CodeBuild 项目的 ParameterOverrides 部分
-解析嵌套堆栈中的参数
引用官方文档: AWS::CloudFormation::Stack
如果使用 Ref 函数将参数值传递给嵌套 堆栈,逗号分隔的列表参数必须是字符串类型。在 换句话说,您不能传递类型为 CommaDelimitedList 到嵌套堆栈。
2) 我不知道如何将列表转换为字符串 在具有以下配置的 ParameterOverrides 部分内:
- 定义列表类型的参数 服务子网: 类型:列表 说明:与服务关联的子网
-尝试在 ParameterOverrides 部分中将参数作为值传递 对于嵌套堆栈,应用 Join 函数将其转换为字符串
ParameterOverrides: !Sub | { "ImageURI" : { "Fn::GetParam" : [ "BuildOutput", "imageDetail.json", "ImageURI" ] }, "ApplicationRepoName": "${ApplicationRepoName}", "Cluster": "${Cluster}", "ListenerArn": "${ListenerArn}", "TargetGroup": "${TargetGroup}", "ServiceDesiredCount": "${ServiceDesiredCount}", "ServiceLoadBalancerPath": "${ServiceLoadBalancerPath}", "ServiceContainerPort": "${ServiceContainerPort}", "ServiceSecurityGroups": { "Fn::Join" : [ ",", "${ServiceSecurityGroups}"] ] }, "ServiceSubnets": { "Fn::Join" : [ ",", "${ServiceSubnets}" ] }, "TaskContainerPort": "${TaskContainerPort}", "TaskCpu": "${TaskCpu}", "TaskMemory": "${TaskMemory}", "TaskExecutionRoleArn": "${TaskExecutionRoleArn}" }
所以我希望 List 应该转换为 String 和 String 应该传递然后在嵌套堆栈中使用,但是, 尝试部署此类堆栈返回错误:
模板错误:Fn::Sub 表达式中的变量 ServiceSecurityGroups 不解析为字符串
我的问题:
是否可以在 ParameterOverrides 部分中使用 Join 函数 将列表转换为字符串?
如果是的话,如果你能分享,我将不胜感激 和我一起举一些例子来说明如何做到这一点。
谢谢。
【问题讨论】:
标签: amazon-web-services parameter-passing amazon-cloudformation aws-codebuild