【问题标题】:AWS CDK assets docker bundlingAWS CDK 资产 docker 捆绑
【发布时间】:2020-12-18 15:41:12
【问题描述】:

我正在使用基于 Docker 的捆绑选项来安装必要的依赖项并创建 Lambda 层。部署成功。如果我尝试再部署几次 - 捆绑已启动,但最后显示“无更改”。这是预期的行为,因为我没有更改任何内容,因此没有引入任何更改。

现在真正的诡计发生在我在 CI/CD 管道中运行部署命令时,该管道每次都会安装一个全新的环境。 CDK 感到困惑,即使没有对资产进行任何更改,它也会每次都重新部署我的层。

问题 我必须做什么才能仅在将更改引入资产时进行部署?

【问题讨论】:

    标签: amazon-web-services assets aws-cdk


    【解决方案1】:

    当捆绑工件时,CDK 对工件中的文件进行哈希处理,如果哈希值不匹配,则认为已进行更改并重新上传工件。

    您可以找出导致哈希旋转的原因...如果后续 cdk deploy 在本地调用不旋转哈希,这可能是因为您应该在 CI/ CD 管道(如依赖项的下载)

    您可以指定自己的哈希:

    const sha = crypto.createHash('sha256');
    const dirents = fs.readdirSync(codepath, { withFileTypes: true });
    const filesNames = dirents
        .filter(dirent => dirent.isFile())
        .filter(dirent => new RegExp('(.*\.go)|(.*\.(mod|sum))$').test(dirent.name))
        .map(dirent => dirent.name);
    
    for (const file of filesNames) {
        const data = fs.readFileSync(path.join(codepath, file));
        sha.update(`<file name=${file}>`);
        sha.update(data);
        sha.update('</file>');
    }
    
    const codeHash = sha.digest('hex');
    
    lambda.Code.fromAsset(basePath, {
        assetHashType: cdk.AssetHashType.CUSTOM,
        assetHash: codeHash,
        bundling: { // whatever you're doing today
    
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2021-12-18
      • 1970-01-01
      • 2022-01-23
      • 2011-11-19
      相关资源
      最近更新 更多