AWS CDK 资产路径不正确
AWS CDK asset path is incorrect
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 生成模板资源路径的方式最近几天有什么变化吗?
原来我在解决另一个问题的时候加了一个cdk ls
来打印出额外的调试信息。该命令重新合成了堆栈,但资产路径不正确。
build: {
commands: [
'cd ' + config.cdkDir,
'cdk synth',
'cdk ls --long'
]
}
解决方案是从构建规范定义中删除 cdk ls --long
。
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 生成模板资源路径的方式最近几天有什么变化吗?
原来我在解决另一个问题的时候加了一个cdk ls
来打印出额外的调试信息。该命令重新合成了堆栈,但资产路径不正确。
build: {
commands: [
'cd ' + config.cdkDir,
'cdk synth',
'cdk ls --long'
]
}
解决方案是从构建规范定义中删除 cdk ls --long
。