Команда запуска AWS: Python не найден

Я использую Boto3 SSM для запуска команд в моем экземпляре.

Когда я запускаю простую команду, такую ​​как эхо hello world или же mkdir abc он работает нормально и дает мне ожидаемый результат. но когда я пытаюсь бежать python -V или любая другая команда Python. Выход python not found, Но python находится в моем EC2-инстансе, который работает под управлением Ubuntu. Когда я проверяю вручную, все работает нормально.

Код:

ssm = boto3.client('ssm' ) 
commands = ['python -V']

ssm.send_command(DocumentName="AWS-RunShellScript", Parameters={'commands': commands}, InstanceIds=['i-xxxxxxxxxxx'])

3 ответа

Решение

С помощью python3 работал. Еще одна вещь, которую стоит упомянуть: он использует ядро ​​python в системе и не распознает никакую другую установленную версию.

Правильный ответ на этот вопрос зависит от установленной ОС AMI.

Для этого вопроса есть несколько вариантов решения этой проблемы:

  • использование python3 так как python (python 2.x) не устанавливается.
  • Установите Python 2.x (Ubuntu): sudo apt-get install python
  • Выполните команду: sudo ln /usr/bin/python3 /usr/bin/python связывать python в python3 в /usr/bin каталог.

В Amazon Linux 2 установлен Python 2.7.14. Команды "python", "python2" и "python2.7" поддерживаются. Python 3 не устанавливается по умолчанию.

В Ubuntu 16.04 64-bit установлен Python 3.5.2. Команды "python3" и "python3.5" поддерживаются. Обратите внимание, что нет ссылки на "Python". Python 2 не устанавливается по умолчанию.

Одна вещь, которую я заметил в Amazon Linux 2 и Python 2.7. Команда python -V записывает строку версии в stderr, что заставит вас думать, что команда завершилась неудачно, так как команда запуска SSM отобразит выходные данные следующим образом, когда команда действительно выполнена. Я обнаружил, что команда SSM Run просто отображает stderr после stdout, разделенного ----------ERROR-------

----------ERROR-------
Python 2.7.14

Python 3 записывает строку версии в стандартный вывод. Это заняло у меня несколько часов, так как я до сих пор не замечал проблемы с stderr в Python 2.x.

Информация об AMI, с которыми я проверял.

Регион: США-Запад-2 (Орегон)

Amazon Linux 2: amzn2-ami-hvm-2.0.20180810-x86_64-gp2 (ami-6cd6f714)

Ubuntu 16.04 LTS: ubuntu / images / hvm-ssd / ubuntu-xenial-16.04-amd64-server-20180814 (ami-51537029)

boto3.ssm не предназначен для использования в качестве инструментов для быстрой инъекции оболочки. Вам нужно установить ssm-agent на свой экземпляр linux, чтобы выполнить более сложный запуск, и наоборот, для windows.

Другие вопросы по тегам