【问题标题】:AWS Run Command : Python Not FoundAWS 运行命令:未找到 Python
【发布时间】:2018-09-21 13:25:03
【问题描述】:

我正在使用 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'])

【问题讨论】:

  • 尝试使用 sudo apt-get install 安装 python。
  • 我的实例中有 Python。我已经提到过了。
  • boto3.client这个客户端支持流吗?
  • 试试/usr/bin/python,而不仅仅是python
  • 它不起作用。

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


【解决方案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 目录中的python3

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 运行命令只是在 stdout 之后显示 stderr 由----------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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我做到了。没有那个,你无论如何都不能注射。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2017-04-25
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2022-07-07
      相关资源
      最近更新 更多