You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CodePipeline部署前未提取工件问题排查与配置求助

解决方案:AWS CodePipeline S3部署未解压工件及CodeBuild错误修复

一、解决直接用AWS Commands构建时S3不解压的问题

问题根源:你在构建阶段生成了project.zip,而CodePipeline的每个阶段输出的工件本身就是一个压缩包。此时S3部署的Extract files before deploy选项只会解压CodePipeline传递的BuildArtifact压缩包,得到里面的project.zip文件,不会再二次解压这个zip。

修正方案:

  • 移除构建阶段的zip -r project.zip ./project命令
  • 修改AWS Commands动作的输出工件配置,直接指定包含./project/**/*(即project目录下所有文件)
  • 这样BuildArtifact会包含project目录的所有文件,S3部署时勾选Extract files before deploy就会把这些文件直接解压到存储桶中

二、改用CodeBuild时的错误修复及正确配置

1. 修复CLIENT_ERROR: git fetch failed with exit status 128

这个错误是CodeBuild尝试直接拉取GitHub代码时权限不足导致的,正确做法是让CodePipeline传递源工件给CodeBuild,而非让CodeBuild自行拉取:

  • 在CodeBuild项目的源设置中,选择CodePipeline作为源类型,不要选GitHub
  • 这样CodeBuild会直接使用CodePipeline源阶段传递的SourceArtifact,无需再执行git拉取,避免权限问题

2. 修复Unsupported field "on-failure" in buildspec

你提供的buildspec.yml本身没有问题,错误来自CodeBuild项目的配置:

  • 进入CodeBuild项目的构建规范设置,确保选择Use a buildspec file,且没有在自定义输入框中添加额外的字段(比如on-failure)
  • 确认仓库根目录的buildspec.yml内容正确,没有残留的on-failure字段

3. 适配S3解压需求的正确buildspec

如果用CodeBuild,无需手动生成zip,直接输出project目录的内容即可:

version: 0.2

phases:
  build:
    commands:
      # 这里可以添加你的实际构建命令(比如编译、测试等),如果不需要则保留echo或留空
      - echo "Build process completed"

artifacts:
  files:
    - project/**/*

配置完成后,CodeBuild输出的BuildArtifact会包含project目录下的所有文件,S3部署时勾选Extract files before deploy就会自动将这些文件解压到存储桶中。

内容的提问来源于stack exchange,提问作者zayaanra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:07:05