AWS Run Command:未找到Python

时间:2017-12-21 05:33:01

标签: python amazon-web-services boto3 amazon-systems-manager

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

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

代码:

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

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

3 个答案:

答案 0 :(得分:1)

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

对于此问题,有几种方法可以解决此问题:

  • 使用python3是因为未安装python(python 2.x)。
  • 安装python 2.x(Ubuntu):sudo apt-get install python
  • 执行命令:sudo ln /usr/bin/python3 /usr/bin/pythonpython链接到python3目录中的/usr/bin

Amazon Linux 2已安装Python 2.7.14。支持命令“ python”,“ python2”和“ python2.7”。默认情况下未安装Python 3。

Ubuntu 16.04 64位已安装Python 3.5.2。支持命令“ python3”和“ python3.5”。请注意,没有指向“ python”的链接。默认情况下未安装Python 2。

我在Amazon Linux 2和Python 2.7中注意到的一个项目。命令python -V将版本字符串写入stderr,这会使您认为命令失败,因为当命令实际成功时,SSM Run Command将显示如下输出。我发现SSM运行命令只是在标准输出用----------ERROR-------

分隔后显示标准输出。
----------ERROR-------
Python 2.7.14

Python 3将版本字符串写入stdout。直到今天我才发现Python 2.x的stderr问题,这花了我几个小时才弄清楚。

我测试过的AMI的信息。

地区:us-west-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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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