У меня есть небольшая среда 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, поэтому я не считаю, что это проблема исходящей сети.
Итак, вопросы:
Есть ли что-нибудь, что могло бы объяснить, почему это внезапно произошло бы без изменений окружающей среды?
Есть ли способ узнать больше о том, почему команда не удалась?
Если возможно, что команда не отвечает за завершение экземпляров, где еще я мог бы поискать?
Во-первых, перестаньте думать, что «ничего не изменилось». Очевидно, что-то изменилось, иначе бы все заработало. Изменение может быть вашим, или это может быть AWS, но что-то изменилось.
На основании ошибки Command 01downloadVersion failed
, похоже, возникла проблема с загрузкой версии из корзины S3, в которой она хранится, в экземпляр EC2.
Эта проблема может быть любой из следующих:
Elastic Beanstalk хранит версии приложений в S3.
Вы можете использовать следующую команду, чтобы увидеть, где в S3 ваши приложения хранят данные:
aws elasticbeanstalk describe-application-versions
В ответе найдите версию, соответствующую той, которую сейчас использует ваше приложение. Там вы увидите что-то вроде следующего:
"SourceBundle": {
"S3Bucket": "my-bucket",
"S3Key": "path/to/my/version.zip"
}
Посмотрите там, чтобы убедиться, что данные не были удалены.
Запретив это, дважды проверьте правильность разрешений IAM для экземпляра EC2, чтобы загрузить версию из корзины S3, и что в корзине S3 нет политики корзины, предотвращающей загрузку файла.