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

CodeBuild工件上传位置不匹配问题排查及强制指定S3桶方案

问题解答

差异原因分析

你看到的两个存储桶差异源于CodeBuild的两种运行模式:

  • CodeBuild项目主页的「工件上传位置」:该配置仅在直接运行CodeBuild项目(如手动启动、非CodePipeline触发)时生效,构建产物会上传到这个指定的S3桶。
  • 构建记录里的随机存储桶:当CodeBuild作为CodePipeline的一个阶段运行时,工件的存储与流转由CodePipeline完全接管,此时会使用CodePipeline的Artifact Store(默认是自动创建的随机命名S3桶,格式通常为codepipeline-<区域>-<随机字符串>),CodeBuild项目自身的工件存储配置会被忽略。

你的场景中,CodeBuild是通过CodePipeline的CodeBuildAction调用的,流水线需要统一管理各阶段的工件传递,因此会自动使用自身的Artifact Store,而非CodeBuild项目单独配置的桶。

强制使用指定存储桶的方法

方法1:配置CodePipeline使用指定的Artifact Store(推荐)

修改Pipeline栈中创建CodePipeline的代码,指定artifactStore为你的alpha-artifact-bucket,这样整个流水线的所有工件(包括CodeBuild的输出)都会存储在这个桶里:

const pipeline = new codepipeline.Pipeline(this, props.pipelineName, {
  pipelineName: props.pipelineName,
  role: this.pipelineRole,
  restartExecutionOnUpdate: true,
  // 添加Artifact Store配置
  artifactStore: {
    bucket: S3.Bucket.fromBucketName(this, 'AlphaArtifactBucket', 'alpha-artifact-bucket'),
    type: codepipeline.ArtifactStoreType.S3
  }
});

部署修改后的Pipeline栈后,后续CodeBuild阶段的输出会自动存入alpha-artifact-bucket,构建记录也会显示该桶。

方法2:在buildspec中直接上传到指定桶(不推荐)

若无需通过CodePipeline传递工件,可修改buildspec.yml,在构建阶段后添加命令直接将产物上传到指定桶:

version: 0.2
env:
  secrets-manager:
    REACT_APP_DOMAIN: "REACT_APP_DOMAIN"
    REACT_APP_BACKEND_SERVICE_API: "REACT_APP_BACKEND_SERVICE_API"
    REACT_APP_GOOGLE_MAP_API_KEY: "REACT_APP_GOOGLE_MAP_API_KEY"
phases:
  install:
    runtime-versions:
      nodejs: 14
    commands:
      - echo Performing yarn install
      - yarn install
  build:
    commands:
      - yarn build
      # 添加S3上传命令
      - aws s3 sync ./build s3://alpha-artifact-bucket/your-target-path/
artifacts:
  base-directory: ./build
  files:
    - "**/*"
cache:
  paths:
    - "./node_modules/**/*"

同时需确保CodeBuild使用的deploymentRole拥有对alpha-artifact-bucket的s3:PutObject等权限。这种方式会断开CodePipeline各阶段的工件衔接,后续部署阶段需从该桶读取产物,会增加流水线复杂度,仅适用于特殊场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:55:28