#amazon-web-services #amazon-elastic-beanstalk #aws-cli
Вопрос:
Сегодня я должен повторно развернуть свое приложение elastic beanstalk, и оно больше не работает из-за какой-то проблемы с прекращением поддержки Python 2
Экземпляр: i-0872ed7568a9820f5] На экземпляре не удалось выполнить команду. Код возврата: 1 Вывод: (УСЕЧЕНО)…обнаружено: Python 2.7 Для продолжения использования этого установщика вы должны использовать Python 3.6 или более поздней версии. Для получения дополнительной информации см. Следующий пост в блоге: https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-python-2-7-in-aws-sdk-for-python-and-aws-cli-v1/. ошибка команды 01_install_cli в файле .ebextensions/copyindexes.config. Для получения более подробной информации проверьте /var/log/eb-активность.войдите в систему с помощью консоли или интерфейса командной строки EB.
Я напрямую не использую Python 2, но отследил проблему с файлом copyindexes.config, который находится в моей папке .ebextensions и содержит следующую строку
01_install_cli:
command: wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip; unzip awscli-bundle.zip; ./awscli-bundle/install -b ~/bin/aws
02_get_index:
command:
aws s3 cp --region eu-west-1 s3://jthink/release_index_21.tar.gz /home/ec2-user/release_index.tar.gz;
aws s3 cp --region eu-west-1 s3://jthink/artist_index_21.tar.gz /home/ec2-user/artist_index.tar.gz;
cd /usr/share/tomcat7;
tar -xvf /home/ec2-user/release_index.tar.gz;
tar -xvf /home/ec2-user/artist_index.tar.gz;
rm /home/ec2-user/release_index.tar.gz;
rm /home/ec2-user/artist_index.tar.gz;
Как я должен изменить это, чтобы решить проблему
Обновить
Хорошо, я изменил сценарий на
01_install_cli:
command: wget https://s3.amazonaws.com/aws-cli/awscli-bundle-1.18.200.zip; unzip awscli-bundle-1.18.200.zip; ./awscli-bundle/install -b ~/bin/aws
Этот бит, казалось, сработал, но затем в eb_activity.log я теперь получаю
Traceback (most recent call last):
File "/usr/lib64/python2.7/logging/__init__.py", line 884, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 49: ordinal not in range(128)
Logged from file util.py, line 476
Traceback (most recent call last):
File "/usr/lib64/python2.7/logging/__init__.py", line 884, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 72: ordinal not in range(128)
Logged from file util.py, line 476
Итак , похоже, я выбрал плохую версию, что мне следовало выбрать ?
Я попробовал с 1.19.0 и той же ошибкой, так что, возможно, проблема в версии aws-cli, но в чем она
Я только изменил строку cli загрузки и установки, когда я ошибся в строке установки, она выдала ошибку об этом, так что я должен иметь это право, но я понятия не имею, откуда взялась эта новая ошибка.
Комментарии:
1. Все эти строки кажутся нормальными. Проблема в том, что на виртуальной машине, на которой вы их запускаете, установлен Python 2, в то время как на ней должен быть Python 3. Откуда это берется?
2. Обновите версию платформы вашей электронной среды до Python 3.6, и все будет в порядке.
3. Виртуальная машина-это Tomcat 7 и машина Java 7, предоставляемые amazon в качестве платформы. Я попытался запустить с помощью другой платформы, но это не удалось с различными ошибками, поэтому я думаю, что вместо этого я хочу изменить этот сценарий, чтобы он использовал версию aws-cli, которая не требует Python 3.6
Ответ №1:
Как вы, вероятно, уже знаете, Python 2 устарел. Чтобы использовать интерфейс командной строки AWS версии 1 со старой версией Python, вам необходимо установить более раннюю версию интерфейса командной строки AWS версии 1.
Python 2.7 был признан устаревшим Фондом программного обеспечения Python 1 января 2020 года. В дальнейшем клиенты, использующие AWS CLI версии 1, должны перейти на использование Python 3, как минимум, с Python 3.6. Поддержка Python 2.7 устарела для новых версий AWS CLI версии 1, начиная с 15.07.2011.
Ознакомьтесь с официальной документацией AWS здесь
Всего наилучшего, Стефан
Комментарии:
1. Да, это долгосрочный план, но переход на платформу, поддерживающую Python 3, имеет негативные последствия, которые приведут к нарушению других функций (например, будут использоваться более поздние версии Java и Tomcat), не полностью совместимые с кодом. Это производственная система, поэтому я просто хочу запустить ее и запустить с минимальными изменениями.
2. Чтобы использовать интерфейс командной строки AWS версии 1 со старой версией Python, вам необходимо установить более раннюю версию интерфейса командной строки AWS версии 1.
3. @Taylor, например, попробуйте версию 1.19.0
4. это правильная версия, есть ли список;, потому что у меня был 1.18.200, и это не сработало
5. Неважно, какая версия, которую я использую, кажется, выдает эту ошибку в юникоде, независимо от того, я не знаю, почему.