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 应用程序版本