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

Устранение неполадок экземпляров Elastic Beanstalk, которые не запускаются успешно

У меня есть небольшая среда Elastic Beanstalk, используемая / очень / редко для демонстраций, настроенная, которая работала годами.

По состоянию на 7 декабря (как я уже сказал, он использовался очень редко) возникла проблема: экземпляр запускается, а через несколько минут будет остановлен. Поскольку теперь он находится под свойствами автомасштабирования, он запустит другой экземпляр ... который завершится через несколько минут. Очевидно, это повторяется последние 6 недель.

Насколько мне известно, с сентября прошлого года в окружающей среде ничего не изменилось.

Получение журналов через панель управления Elastic Beanstalk возвращает cfn-init.log, который включает следующее:

2018-01-19 21:58:42,290 [DEBUG] Writing content to /opt/elasticbeanstalk/bin/download_source_bundle
2018-01-19 21:58:42,290 [DEBUG] Retrieving contents from https://s3.amazonaws.com/elasticbeanstalk-env-resources-us-east-1/eb_patching_resources/download_source_bundle.py
2018-01-19 21:58:42,342 [DEBUG] Setting mode for /opt/elasticbeanstalk/bin/download_source_bundle to 000750
2018-01-19 21:58:42,343 [DEBUG] Setting owner 0 and group 0 for /opt/elasticbeanstalk/bin/download_source_bundle
2018-01-19 21:58:42,343 [DEBUG] Running command 01downloadVersion
2018-01-19 21:58:42,343 [DEBUG] No test for command 01downloadVersion
2018-01-19 22:00:26,265 [ERROR] Command 01downloadVersion (/opt/elasticbeanstalk/bin/download_source_bundle) failed
2018-01-19 22:00:26,268 [DEBUG] Command 01downloadVersion output: 
2018-01-19 22:00:26,269 [ERROR] Error encountered during build of Infra-WriteApplication2: Command 01downloadVersion failed
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 505, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 241, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py", line 103, in apply
    raise ToolError("Command %s failed" % name)
ToolError: Command 01downloadVersion failed
2018-01-19 22:00:26,273 [ERROR] Unhandled exception during build: Command 01downloadVersion failed
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 135, in <module>
    worklog.build(detail.metadata, configSets)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 117, in build
    Contractor(metadata).build(configSets, self)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 496, in build
    self.run_config(config, worklog)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 505, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 241, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py", line 103, in apply
    raise ToolError("Command %s failed" % name)
ToolError: Command 01downloadVersion failed

К сожалению, я не вижу более подробной информации о том, почему эта команда не удалась где-либо, ни в одном из журналов. Я подтвердил, что файл download_source_bundle.py, который он пытается загрузить, действителен.

Я не на 100% уверен, что вышеуказанная команда является причиной прерывания, но я не вижу других ошибок в журналах. Поиск в Google строки «Ошибка при сборке Infra-WriteApplication2: Command 01downloadVersion failed» возвращает людей, которые задают похожие вопросы, а затем говорят, что это произошло из-за разрешений IAM ... однако разрешения IAM не изменились по крайней мере с сентября. Остальные строки в журнале относятся к установке RPM из https://s3.amazonaws.com, поэтому я не считаю, что это проблема исходящей сети.

Итак, вопросы:

  1. Есть ли что-нибудь, что могло бы объяснить, почему это внезапно произошло бы без изменений окружающей среды?

  2. Есть ли способ узнать больше о том, почему команда не удалась?

  3. Если возможно, что команда не отвечает за завершение экземпляров, где еще я мог бы поискать?

Во-первых, перестаньте думать, что «ничего не изменилось». Очевидно, что-то изменилось, иначе бы все заработало. Изменение может быть вашим, или это может быть AWS, но что-то изменилось.

На основании ошибки Command 01downloadVersion failed, похоже, возникла проблема с загрузкой версии из корзины S3, в которой она хранится, в экземпляр EC2.

Эта проблема может быть любой из следующих:

  • Разрешения недостаточно для загрузки версии, или
  • Версия была удалена из корзины S3.

Elastic Beanstalk хранит версии приложений в S3.

Вы можете использовать следующую команду, чтобы увидеть, где в S3 ваши приложения хранят данные:

aws elasticbeanstalk describe-application-versions

В ответе найдите версию, соответствующую той, которую сейчас использует ваше приложение. Там вы увидите что-то вроде следующего:

"SourceBundle": {
    "S3Bucket": "my-bucket",
    "S3Key": "path/to/my/version.zip"
}

Посмотрите там, чтобы убедиться, что данные не были удалены.

Запретив это, дважды проверьте правильность разрешений IAM для экземпляра EC2, чтобы загрузить версию из корзины S3, и что в корзине S3 нет политики корзины, предотвращающей загрузку файла.