代码管道中的资产执行步骤失败 - CDK (Java)

Posted

技术标签:

【中文标题】代码管道中的资产执行步骤失败 - CDK (Java)【英文标题】:Assets execution step failing in codepipeline - CDK (Java) 【发布时间】:2022-01-18 07:39:40 【问题描述】:

我是这里的新手,我需要任何有关 CDK 代码管道的帮助。 我正在尝试使用管道部署一个模块,但由于某种原因,它卡在了“资产”执行步骤。

错误:无法在“assembly-xxxPipelinexxxStack-Deploy/xxxPipelinexxxStackDeployxxxPipelinexxxStackF5F6A16A.assets.json”读取资产清单:ENOENT:没有这样的文件或目录,stat 'assembly-xxxPipelinexxxStack-Deploy/xxxPipelinexxxStackDeployxxxPipelinexxxStackF5F6A16A.assets.json'

我已经检查了 cdk.out,它确实包含位于 assembly-xxxPipelinexxxStack-Deploy/xxxPipelinexxxStackDeployxxxPipelinexxxStackF5F6A16A.assets.json 位置的所需文件

自动生成的 buildspec 文件如下:


  "version": "0.2",
  "phases": 
    "install": 
      "commands": [
        "npm install -g cdk-assets"
      ]
    ,
    "build": 
      "commands": [
        "cdk-assets --path \"assembly-xxxPipelinexxxStack-Deploy/xxxPipelinexxxStackDeployxxxPipelinexxxStackF5F6A16A.assets.json\" --verbose publish \"38341e9ef6b01cd2c7cc3b47cd0d2da98933b1121302bf0b03603950b8ff0bd4:current_account-current_region\""
      ]
    
  

流水线阶段是:

来源 - 成功 构建 - 成功 合成器 - 成功 资产 FileAsset1 - 失败

感谢您的时间并回复。

【问题讨论】:

【参考方案1】:

你没有指定这个,但我假设你使用的是CDK pipelines(不是aws-cdk-lib.aws_codepipeline)。

这是 CDK 管道的一个怪癖 - 必须更改构建规范以反映资产中的每次更改。这在实践中意味着当您使用资产时,您必须为管道启用self-mutation,您似乎禁用了它。

【讨论】:

非常感谢@gshpychka 的回答,是的,我正在使用CDK 管道awscdk.pipelines.CodePipeline; 但是,我不得不禁用自突变,因为它首先失败了,我的错误获取自突变是:No stacks match the name(s) xxxPipelinexxxStack 下一条评论中有更多错误 Error: No stacks match the name(s) xxxPipelinexxxStack at CdkToolkit.validateStacksSelected (/usr/local/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:545:13) at CdkToolkit.selectStacksForDeploy (/usr/local/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:492:10) at CdkToolkit.deploy (/usr/local/lib/node_modules/aws-cdk/lib/cdk-toolkit.ts:120:20) at initCommandLine (/usr/local/lib/node_modules/aws-cdk/bin/cdk.ts:267:9) 命令没有成功退出 cdk -a .部署 xxxPipelinexxxStack --require-approval=never --verbose 退出状态 1 使用资产时必须启用自突变。至于您的问题,我会将其作为一个单独的问题发布,因为它与问题中的资产问题无关。虽然我会尝试先手动执行堆栈的cdk deploy(启用自突变)。 感谢您的快速回复 - gshpychka。我试过手动 cdk 部署,但仍然失败。根据您的建议,我发布了一个不同的问题。

以上是关于代码管道中的资产执行步骤失败 - CDK (Java)的主要内容,如果未能解决你的问题,请参考以下文章

与现有代码管道一起使用的 AWS CDK 管道

使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?

AWS CDK - 多个堆栈 - 找不到 Lambda 代码位置的参数

在本地运行 GitLab 和 GitLab-Runner docker 实例时,管道中的构建步骤因连接被拒绝错误而失败

使用 CDK Deploy 需要哪些 IAM 权限?

将安全字符串参数插入 ssm 参数存储的 CDK 和自动化?