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

如何将CodeBuild构建产物上传至S3存储桶根目录

问题原因与解决方法

核心问题

你遇到的构建产物被存入仓库名子目录的情况,主要来自两个配置层面的问题:

  1. CodeBuild Artifacts的前缀设置:从你的配置截图来看,Artifacts部分指定了**Prefix(前缀)**为仓库名称,CodeBuild会自动把构建产物上传到S3的这个前缀目录下。
  2. Angular构建输出路径偏差:Angular 16执行ng build --configuration production后,产物默认会生成在dist/[你的项目名称]子目录里,而非dist根目录。你当前的BUILD_FOLDER设为dist,导致s3 sync命令把整个dist目录(包含项目名子目录)同步到S3,叠加Artifacts的前缀就会出现多余层级。

解决步骤

方法1:调整CodeBuild Artifacts配置

进入你的CodeBuild项目配置页面,找到「Artifacts」部分:

  • 如果你不需要CodeBuild自动上传产物(已经在buildspec里用aws s3 sync手动上传),直接选择No artifacts并保存配置。
  • 若要保留Artifacts上传,清空Prefix字段,CodeBuild就会把产物传到S3根目录。

方法2:修正buildspec的构建目录指向

修改buildspec中的BUILD_FOLDER变量,指向Angular实际的输出子目录:

variables:
  CACHE_CONTROL: "86400"
  # 替换成你的Angular项目名称,比如"my-angular-app"
  BUILD_FOLDER: "dist/你的项目名称"

或者在post_build的sync命令里动态获取子目录:

aws s3 sync ${BUILD_FOLDER}/$(ls -1 ${BUILD_FOLDER}) s3://${S3_BUCKET} --delete

这样就能直接把项目构建产物同步到S3根目录,不会带出多余层级。

额外注意

不要同时使用CodeBuild Artifacts自动上传和buildspec里的aws s3 sync,两者选其一即可,避免重复上传或路径冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:32:40