为什么 AWS CodeDeploy 超时时间比指定的超时时间早

为什么 AWS CodeDeploy 超时时间比指定的超时时间早

我正在使用 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 中的超时。

相关内容