AWS elasti c развертывание beanstalk всегда не выполняется (загрузка zip-файла) - PullRequest
0 голосов
/ 29 мая 2020

Я загружаю новую версию своего приложения в виде zip-файла и нажимаю «развернуть». Затем статус меняется на серьезный.

Это трассировка ошибки:

WARN
Environment health has transitioned from Info to Degraded. Command failed on all instances. Incorrect application version found on all instances. Expected version "Sample" (deployment 2). Application update failed 10 seconds ago and took 4 minutes.

ERROR
During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version.

ERROR
Failed to deploy application.

ERROR
Unsuccessful command execution on instance id(s) 'i------'. Aborting the operation.

ERROR
[Instance: i-002326d7ceeba0ea9] Command failed on instance. Return code: 
1 Output: nginx: [emerg] no host in upstream ":80" in /etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf:
2 nginx: configuration file /etc/nginx/nginx.conf test failed Failed to start nginx, abort deployment. 
Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/01flip.sh failed. 
For more detail, check /var/log/eb-activity.log using console or EB CLI.

ERROR
Failed to start nginx, abort deployment

/ var / log / eb-activity.log вот ошибки в этом журнале:

[0mInstalling dependencies from Pipfile.lock (5e00f3)…
  Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-lp47FrbD/bin/python: not found
...
[2020-05-29T01:51:24.746Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1/AppDeployEnactHook/00run.sh] : Completed activity. Result:
  jq: error (at <stdin>:1): Cannot iterate over null (null)
  a2f568b1c255eb9e0fdc6ceebdd29b9ec64b9ab4481a3e1c5bcb11828b0ac526
[2020-05-29T01:51:24.747Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1/AppDeployEnactHook/01flip.sh] : Starting activity...
[2020-05-29T01:51:26.099Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1/AppDeployEnactHook/01flip.sh] : Activity execution failed, because: nginx: [emerg] no host in upstream ":80" in /etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf:2
  nginx: configuration file /etc/nginx/nginx.conf test failed
  Failed to start nginx, abort deployment (ElasticBeanstalk::ExternalInvocationError)
caused by: nginx: [emerg] no host in upstream ":80" in /etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf:2
  nginx: configuration file /etc/nginx/nginx.conf test failed
  Failed to start nginx, abort deployment (Executor::NonZeroExitStatus)
...
[2020-05-29T01:51:26.099Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1/AppDeployEnactHook/01flip.sh] : Activity failed.
[2020-05-29T01:51:26.099Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1/AppDeployEnactHook] : Activity failed.
[2020-05-29T01:51:26.099Z] INFO  [11395] - [Application update v1.3.3-1@3/AppDeployStage1] : Activity failed.
[2020-05-29T01:51:26.100Z] INFO  [11395] - [Application update v1.3.3-1@3] : Completed activity. Result:
  Application update - Command CMD-AppDeploy failed

Невозможность развертывания была постоянной для этой среды после нескольких попыток, даже после возврата к более старой версии.

1 Ответ

0 голосов
/ 02 июня 2020

Впоследствии я решил эту проблему, изолировав код и сообщения об ошибках с помощью локального образа docker с zip-файлом. Выполнение кода на моей машине за пределами docker НЕ выявило каких-либо проблем, потому что в части pip / pipenv отсутствовала какая-то зависимость.

Шаги для локального тестирования docker:

В контейнере docker:

docker system prune

Go в папку с Dockerfile

docker image build -t <app_name>:<version_number> .

ДЛЯ локального запуска: (docker rm <app_name> во-первых, если у вас уже есть остановленный контейнер с таким же именем из предыдущего тестирования)

docker container run --publish 80:80 --name <app_name> myapp:1.0

ПРИМЕЧАНИЕ: это не позволит вам тестировать AWS функции, требующие переменных среды, таких как ~ . aws учетные данные, потому что они не находятся внутри образа. (но вы можете добавить их с помощью Dockerfile)

После запуска контейнера docker вы увидите (я видел) сообщения об ошибках, которых не было при локальном тестировании, потому что они были вызваны отсутствие зависимости пакета и ошибка pipenv.

...