AWS Elastic Beanstalk - CodePipeline 部署不工作 - 健康状况 - 严重

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk - CodePipeline 部署不工作 - 健康状况 - 严重【英文标题】:AWS Elastic Beanstalk - deploy by CodePipeline not working - health status - Severe 【发布时间】:2021-12-11 23:42:57 【问题描述】:

我在 CodePipeline 中创建了管道。 Pipelien 运行良好,每个阶段都成功了。

即使部署阶段处于成功状态,但在 Elastic Beanstalk 上运行应用程序时出现问题。我不知道为什么,可能是通过增强的健康授权。

当我手动将 .war 文件上传到 Elastic Beanstalk 时,应用程序运行良好。但是,当 CodePipeline 将 .war 文件上传到 Elastic Beanstalk 时,它不起作用。

我的 buildspec.yml

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`
artifacts:
  files:
    - target/myapp.war
  discard-paths: yes

【问题讨论】:

【参考方案1】:

我猜这是因为部署了错误的工件格式。您可以通过转到管道正在使用的 S3 存储桶并检查生成的工件来检查这一点。无论如何,我建议您上传一个 zip 文件,而不是一个单一的战争。如果需要,这将允许您使用 .ebextensions 文件并部署多个战争。详情请见here。

您可以像这样部署一个 zip 文件:

version: 0.2
phases:
  pre_build:
    commands:
      - echo In the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn clean package
      - mkdir build-output
      - cp target/myapp.war build-output/myapp.war
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - build-output/**/*
    - base-directory: build-output*

【讨论】:

Hej,谢谢您的回答。我用了你的代码。现在我有 S3 zip 文件,里面有文件夹 build-output 和 .war 文件,但问题是一样的。 Elastic Beanstalk 的状态为 Health - Severe 我认为这可能是权限问题,但我不知道如何解决它 确保 beanstalk 服务角色具有访问 S3 存储桶的权限。 Elastic Beanstalk 应用程序版本选项卡包含我的每个部署。我看到有来自 S3 的 .zip 文件。我尝试手动部署 .zip 文件,但它不起作用。看起来 Elastic Beanstalk 从 S3 获取 .zip 文件并且不知道如何解压缩此文件。你知道如何告诉 Elastic Beanstalk 解压缩文件然后部署 .war 文件吗? 单击应用程序版本中的文件应该会下载它,但是没有适当的扩展名。您需要自己添加 .ZIP 扩展名。也可以尝试基本目录指令。

以上是关于AWS Elastic Beanstalk - CodePipeline 部署不工作 - 健康状况 - 严重的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk “git aws.push” 只承诺区别?

如何调试失败的NetCore AWS Elastic Beanstalk部署?

在 AWS Elastic Beanstalk 上使用 Docker 预编译资产

Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本

[AWS] Elastic Beanstalk

AWS Elastic Beanstalk httpd/conf.d/ssl.conf 无法识别