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

CodePipeline部署Elastic Beanstalk成功但应用健康状态Severe排查

问题根因与修复方案

首要根因

你手动上传的是单独的.war包文件,Elastic Beanstalk会直接识别并部署该war包。但CodePipeline的构建产物默认是zip压缩包,你当前的buildspec配置会生成一个包含myapp.war的zip包,EB部署时只会解压这个zip包,不会额外处理压缩包内的war文件,导致应用没有被实际部署,这是健康状态为Severe的核心原因。

修复配置

根据你使用的EB平台类型选择对应的buildspec修改方案:

  • 如果你使用的是Tomcat平台:
    调整artifacts配置,确保最终输出的构件结构可被EB直接识别:
version: 0.2
phases:
  pre_build:
    commands:
      - echo In the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn clean package
  post_build:
    commands:
      - echo Build completed on `date`
      # 重命名为ROOT.war确保作为根路径应用部署
      - mv target/myapp.war target/ROOT.war
artifacts:
  files:
    - ROOT.war
  base-directory: target
  discard-paths: yes

修改后构件包内只有ROOT.war一个文件,EB会自动识别并部署该war包。

  • 如果你使用的是Java SE平台:
    需要新增Procfile指定应用启动命令,调整后的buildspec如下:
version: 0.2
phases:
  pre_build:
    commands:
      - echo In the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn clean package
  post_build:
    commands:
      - echo Build completed on `date`
      - mv target/myapp.war target/ROOT.war
      # 新增启动配置文件
      - echo 'web: java -jar ROOT.war' > target/Procfile
artifacts:
  files:
    - ROOT.war
    - Procfile
  base-directory: target
  discard-paths: yes

增强型健康授权排查

如果修改配置后仍有健康状态异常,按以下步骤确认权限配置:

  • 检查EB环境关联的EC2实例角色,确认已附加AWSElasticBeanstalkEnhancedHealth托管策略
  • 检查CodePipeline部署阶段的服务角色,确认已配置elasticbeanstalk:*、s3:GetObject、s3:ListBucket等EB部署所需权限
  • 下载EB环境的全量日志,查看/var/log/catalina.out(Tomcat平台)或/var/log/web.stdout.log(Java SE平台)的启动报错,定位具体异常原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:02