【问题标题】:AWS CDK asset path is incorrectAWS CDK 资产路径不正确
【发布时间】: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


    【解决方案1】:

    事实证明,我添加了一个cdk ls 以在解决另一个问题时打印出额外的调试信息。该命令重新合成了堆栈,但资产路径不正确。

              build: {
                commands: [
                  'cd ' + config.cdkDir,
                  'cdk synth',
                  'cdk ls --long'
                ]
              }
    

    解决方案是从构建规范定义中删除cdk ls --long

    【讨论】:

    • 哇,这正是我的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多