我正在使用 AWS codedeploy 部署我的网站。我的应用程序停止步骤如下所示:
ApplicationStop:
- location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh
timeout: 600
runas: root
这个脚本如下所示:
source ~/.bashrc
cd /var/www/html/laravel
if [ "$LARAVEL_ENV" = "production" ]
then
php artisan deployment:remove-self-from-loadbalancer --env=$LARAVEL_ENV
fi
手动运行脚本大约需要一秒钟,但是当部署运行时,它会在 30 秒后挂起并失败,并抛出Script at specified location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh failed to complete in 30 seconds
。
使用的源将环境设置为生产,我可以看到预期的效果:部署开始后几乎立即从负载均衡器中删除服务器。
据我所知,此超时应该在 10 分钟后才会发生。为什么发生得这么快?
答案1
我们能够解决这个问题。阅读文档更仔细地,我的同事提出了一个建议。CodeDeploy 代理将最新的成功部署安装存储在 中/opt/codedeploy-agent/deployment-root/some-dir/some-other-dir
。在下一次部署期间,存储在那里的 appspec 和脚本将用于部署的第一步。所以我们必须登录到每个服务器,转到该目录,然后手动更改 appspec 中的超时。