【发布时间】:2021-09-09 12:44:59
【问题描述】:
9 月 6 日,我使用 CodePipeline 运行了一个构建。它使用 CDK 为项目的堆栈生成 CloudFormation 模板。堆栈具有资产(一个 Lambda 层),并且资产正确放置在 cdk.out 文件夹中。这可以在 CloudFormation 模板中看到:
"Metadata": {
"aws:cdk:path": "MyStack/MyLayer/Resource",
"aws:asset:path": "asset.ccb8fd8b4259a8f517879d7aaa083679461d02b9d60bfd12725857d23567b70f",
"aws:asset:property": "Content"
}
从昨天开始,构建失败并显示“上传的文件必须是非空 zip”。当我进一步调查时,我注意到模板不再正确。而是将资产路径设置为 Lambda 的源代码:
"Metadata": {
"aws:cdk:path": "MyStack/MyLayer/Resource",
"aws:asset:path": "/codebuild/output/src216693626/src/src/lambdas/layers",
"aws:asset:property": "Content"
}
当我构建时,我在 buildspec 文件中添加了额外的命令,这表明 assets.abcdef 文件夹具有层及其依赖项,而 src 文件夹没有。然而现在的模板不同了。
这段时间没有更改任何代码,我已经尝试了 CDK 版本 1.105.0 和 1.119.0。
这段代码声明了层:
new lambdapython.PythonLayerVersion(this.stack, 'MyLayer', {
entry: path.join(__dirname, '../../src/lambdas/layers'),
description: 'Common utilities for the Lambdas',
compatibleRuntimes: [lambda.Runtime.PYTHON_3_8],
layerVersionName: `${Aws.STACK_NAME}Utils`,
});
我是否有一种已知的方法可以强制堆栈使用 cdk.out 文件夹中的资产?过去几天 CDK 生成模板资产路径的方式是否发生了变化?
【问题讨论】:
标签: amazon-cloudformation aws-cdk aws-codepipeline