AWS 运行 命令:Python 未找到

AWS Run Command : Python Not Found

我在我的实例中使用 Boto3 SSM 来执行 运行 命令。

当我 运行 简单命令(例如 echo hello worldmkdir abc 时,它工作正常并给出预期的输出。但是当我尝试 运行 python -V 或任何其他 python 命令时。输出为 python not found。但是 python 在我的 EC2 实例中,它是 运行ning Ubuntu。当我手动检查时它工作正常。

代码:

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

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

boto3.ssm 并不意味着用作您的快速 shell 注入工具。您需要安装 ssm-agent to your linux instance 才能执行更高级的触发,反之亦然 windows。

使用 python3 有效。另外要提一下,它使用系统中的核心 python 并且不识别安装的任何其他版本。

此问题的正确答案取决于安装的 OS AMI。

对于这个问题,有几个选项可以解决这个问题:

  • 使用python3 因为python (python 2.x) 没有安装。
  • 安装 python 2.x (Ubuntu): sudo apt-get install python
  • /usr/bin目录下执行命令:sudo ln /usr/bin/python3 /usr/bin/python到linkpythonpython3

亚马逊 Linux 2 安装了 Python 2.7.14。支持命令 "python"、"python2" 和 "python2.7"。 Python默认不安装3。

Ubuntu 16.04 64 位已安装 Python 3.5.2。支持命令 "python3" 和 "python3.5"。注意没有link到"python"。 Python默认不安装2。

我在亚马逊 Linux 2 和 Python 2.7 上注意到的一件商品。命令 python -V 将版本字符串写入 stderr,这会让您认为命令失败,因为 SSM 运行 命令实际成功时会显示​​如下输出。我发现 SSM 运行 命令只是在由 ----------ERROR-------

分隔的标准输出之后显示标准错误
----------ERROR-------
Python 2.7.14

Python 3 将版本字符串写入标准输出。这花了我几个小时才弄清楚,因为直到今天我才注意到 Python 2.x 的 stderr 问题。

有关我测试过的 AMI 的信息。

区域:us-west-2(俄勒冈)

亚马逊 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)