为什么使用AWS代码部署ApplicationStart超时?

时间:2019-04-21 21:33:07

标签: amazon-ec2 aws-code-deploy

我正在使用codedeploy将springboot应用程序部署到ec2。但是我一直收到脚本超时错误。我将超时设置为60秒,这样应用程序总是在20秒内启动。该应用程序启动正常。我在Linux实例上运行top,并看到Java进程已启动。然后,我可以使用邮递员访问http状态检查端点并确认它已成功启动。但这就是代码部署控制台中的样子:

enter image description here

appspec.yml文件如下

enter image description here

server_start.sh文件如下所示。 enter image description here

为什么会这样?谢谢。

2 个答案:

答案 0 :(得分:0)

您应将脚本的一些代码放入安装前安装后

删除java -jar application.jar

BeforeInstall –您可以将此部署生命周期事件用于预安装任务,例如解密文件和创建当前版本的备份。 安装–在此部署生命周期事件中,CodeDeploy代理将修订文件从临时位置复制到最终目标文件夹。此事件是为CodeDeploy代理保留的,不能用于运行脚本。 安装后–您可以将此部署生命周期事件用于配置应用程序或更改文件权限之类的任务。 ApplicationStart –通常使用此部署生命周期事件来重新启动在ApplicationStop期间停止的服务。

然后为您的ApplicationStart创建另一个bash脚本。将您先前删除的行放在此脚本上。

答案 1 :(得分:0)

我认为这与Linux进程的工作方式有关而不是与Code Build有关。我远不是专家,但是根据AWS文档,您必须使用某种方式来启动长时间运行的进程(作为Java应用程序)

语法是:

#!/bin/bash
/tmp/sleep.sh > /dev/null 2> /dev/null < /dev/null &

通过Java命令替换睡眠。

More details here