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

AWS CodePipeline构建Java WAR包至Elastic Beanstalk失败排查求助

AWS CodeBuild 工件上传失败排查步骤

1. 先排除mv命令的干扰

暂时修改buildspec.yml,去掉post_build阶段的移动命令,直接上传Maven生成的原始WAR包,验证基础上传是否正常:

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  build:
    commands:
      - mvn clean install
artifacts:
  files:
      - target/MyApp-1.0.war

运行构建后,去对应的S3桶里查找target/MyApp-1.0.war路径下的文件,如果能找到,说明问题出在mv命令或后续路径配置。

2. 增加日志确认文件存在性

在buildspec.yml中添加目录查看命令,确认每个阶段的文件状态:

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  build:
    commands:
      - mvn clean install
      - ls -la target/  # 确认WAR包生成位置
  post_build:
    commands:
      - mv target/MyApp-1.0.war ROOT.war
      - ls -la  # 确认ROOT.war是否在当前工作目录
artifacts:
  files:
      - ROOT.war

查看CodeBuild日志中的ls输出,确认ROOT.war确实存在于当前工作目录,避免因为路径错误导致工件找不到。

3. 检查CodeBuild工件上传日志

CodeBuild在post_build阶段结束后,会有专门的工件上传日志段,重点查看以下内容:

  • 是否出现No matching artifacts found错误
  • 工件上传的目标S3桶和路径是否与你预期一致
  • 有没有权限相关的报错(比如CodeBuild角色没有S3写入权限)

4. 修正工件路径配置

如果mv命令后ROOT.war不在当前工作目录(比如当前工作目录不是src),可以用绝对路径或者通配符匹配:

artifacts:
  files:
      - **/ROOT.war  # 匹配所有子目录下的ROOT.war

或者直接指定绝对路径(从日志中获取的生成路径):

artifacts:
  files:
      - /codebuild/output/src1021125740/src/ROOT.war

5. 验证CodeBuild服务角色权限

确认CodeBuild使用的服务角色已附加包含以下权限的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::你的工件桶名/*"
        }
    ]
}

6. 检查CodePipeline输出配置

确认CodePipeline中CodeBuild阶段的输出工件配置:

  • 目标S3桶是否正确
  • 工件前缀是否填写错误(比如多加了不必要的路径)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:57:15