Как заменить эту команду AWS CLI, которая больше не работает при развертывании приложения Elastic Beanstalk

#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. Неважно, какая версия, которую я использую, кажется, выдает эту ошибку в юникоде, независимо от того, я не знаю, почему.