【发布时间】:2020-01-11 02:27:26
【问题描述】:
使用 AWS CDK,我有一个 CodePipeline,它为 5 个不同的 Lambda 函数生成构建工件,然后将这些工件作为参数传递给 CloudFormation 模板。基本设置与this example 相同,CloudFormation 部署操作基本如下所示:
new CloudFormationCreateUpdateStackAction({
actionName: 'Lambda_CFN_Deploy',
templatePath: cdkBuildOutput.atPath('LambdaStack.template.json'),
stackName: 'LambdaDeploymentStack',
adminPermissions: true,
parameterOverrides: {
...props.lambdaCode.assign(lambdaBuildOutput.s3Location),
// more parameter overrides here
},
extraInputs: [lambdaBuildOutput],
})
但是,当我尝试部署时,我收到此错误:
1 validation error detected: Value at 'pipeline.stages.3.member.actions.1.member.configuration' failed to satisfy constraint:
Map value must satisfy constraint:
[Member must have length less than or equal to 1000, Member must have length greater than or equal to 1]
CodePipeline documentation 指定 ActionDeclaration 的 Configuration 属性中的值最多可包含 1000 个字符。如果我查看来自 cdk synth 的 YAML 输出,ParameterOverrides 属性会出现 1351 个字符。所以这是个问题。
我该如何解决这个问题?我以后可能需要添加更多的 Lambda 函数,所以这个问题只会变得更糟。部分问题是CDK code 在配置输出的每个存储桶/对象对名称中插入'LambdaSourceBucketNameParameter' 和'LambdaSourceObjectKeyParameter',这让我失去了61 * 5 = 305 个字符,只是因为冗长。我可以通过覆盖那些生成的名称来获得一部分吗?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation aws-codepipeline aws-cdk