使用 AWS Systems Manager 执行脚本时未注册 EC2 pip 安装

问题描述

我想知道为什么 ec2 上执行的脚本和 pip 安装未注册的位置存在差异。在我的情况下,我创建了一个 ec2,ssh 连接,pip 安装了我所有必要的包,创建了一个 python 脚本,并没有任何错误地执行它。现在我需要从 lambda 函数执行此脚本,因此我尝试使用 AWS 系统管理器来执行此操作。为了进行测试,我使用了 AWS 中的 Run Command 选项:

  1. 选定的 AWS-RunShellScript
  2. 命令:python <path_to_script>/test.py
  3. 选择我的特定实例作为目标

但是当我这样做时,我收到以下错误

import geopandas as gpd
ImportError: No module named geopandas

为什么在使用 AWS Systems Manager 时 pip 安装的 python 包没有注册,但是当我 ssh 到 ec2 实例时脚本执行得很好?

解决方法

首先,AWS-RunShellScript 不使用 Lambda 函数。要使用 Lambda,您需要使用 aws:executeScript 插件创建自动化文档。

使用 AWS-RunShellScript(运行命令),将脚本内容传递给实例上的 ssm 代理并存储为 _script.sh 文件并使用 sudo 权限直接执行。

我尝试了上面提到的相同步骤,并且在我的 Linux 机器上运行正常。

什么是操作系统?模块是否使用 --user 选项安装?

也许创建一个带有“pip list”的文件并使用python执行以查看包列表是否包含geopandas。