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

CodeBuild开启artifacts批量构建时pre_build依赖S3前缀无对象报错如何解决

报错原因

当开启CodeBuild批量构建的artifacts功能时,被其他任务依赖的前置任务(这里为pre_build)默认需要输出制品到S3,供后续依赖任务拉取使用。你当前的pre_build对应的buildspec未配置任何artifacts输出规则,执行完成后不会往S3上传任何文件,后续任务拉取依赖制品时就会触发找不到S3对象的报错。关闭artifacts功能时,批量构建不需要处理跨任务制品传递,因此可以正常运行。

解决方法

你可以根据实际需求选择以下任意一种方案:

方案1:给pre_build配置artifacts输出(适合需要将pre_build生成的文件传递给后续任务的场景)

修改pre_build对应的buildspec文件,新增artifacts配置,指定需要传递的文件路径,示例如下:

version: 0.2  
phases:
  install:
    commands:
      - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2&
      - echo This always runs even if the update or install command fails
  pre_build:
    commands:
      - cd ci-cd
      - mkdir -p build
      - ls
      - echo $BUILD_EXPORT_VARIABLE_FILE
      - chmod u+x export_github_variables.sh
      - . ./export_github_variables.sh
# 新增artifacts配置
artifacts:
  files:
    - 'ci-cd/build/**/*'
    # 可根据实际需求添加其他需要传递的文件
    - 'ci-cd/export_github_variables.sh'
cache:
  paths:
    - 'ci-cd/build/**/*'

方案2:修改依赖类型为顺序执行(适合后续任务不需要使用pre_build生成的任何文件,仅需保证执行顺序的场景)

修改主buildspec的批量构建配置,给依赖pre_build的任务添加dependency-type: SEQUENTIAL配置,指定仅按顺序执行,不拉取前置任务的制品,示例如下:

version: 0.2

artifacts:
  files: 
    - '**/*'
batch:
  fast-fail: true
  build-graph:
    - identifier: pre_build
      buildspec: ci-cd/application-build/pre_build.yml
      ignore-failure: false
    - identifier: build_mysql
      buildspec: ci-cd/application-build/build_mysql.yml
      depend-on:
        - pre_build
      dependency-type: SEQUENTIAL
      ignore-failure: false
    - identifier: build_rabbitmq
      buildspec: ci-cd/application-build/build_rabbitmq.yml
      depend-on:
        - pre_build
      dependency-type: SEQUENTIAL
      ignore-failure: false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:03