Команда запуска 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.