Назад | Перейти на главную страницу

Почему время ожидания 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.

Используемый источник устанавливает env в production, и я вижу ожидаемый эффект: сервер удаляется из балансировщика нагрузки почти сразу после запуска развертывания.

Насколько я понимаю, этот таймаут не должен происходить раньше, чем через 10 минут. Почему это происходит так быстро?

Мы смогли это решить. Чтение документация Тщательно, мой коллега сделал предложение. Агент CodeDeploy сохраняет последнюю успешную установку развертывания в /opt/codedeploy-agent/deployment-root/some-dir/some-other-dir. Во время следующего развертывания спецификации приложений и хранящиеся там сценарии используются для первых шагов развертывания. Поэтому нам пришлось войти на каждый сервер, перейти в этот каталог и вручную изменить время ожидания в спецификации приложений.