尝试从 ssm运行 ec2 python 脚本时出现“导入错误:没有名为 sqlalchemy 的模块”错误



我正在尝试使用来自 Lambda 的 ssm runShellScript 在我的 ec2 实例上运行 python 脚本。使用创建文本文件的简单脚本进行测试时,它可以毫无问题地运行。我可以在 ec2 上看到文本文件。但是当尝试运行预期的python脚本(analyzer.py(时,我收到以下错误:"导入错误:没有名为sqlalchemy的模块">

脚本 analyzer.py 使用sqlalchemy模块。当我直接从 ec2 服务器运行 analyzer.py 时,脚本运行良好。思潮?

原因是当使用 ssm runShellScript 向 ec2 实例发送命令时,您以"root"身份运行,我假设它没有安装 sqlalchemy 库。您需要以"ec2-user"(或已安装 sqlalchemy 的任何用户帐户(身份运行。

我使用以下方法使其工作:

  1. 在/home/ec2-user/run_analyzer.sh 创建一个包含以下内容的文件:
cd <folder that contains analyzer.py>
python analyzer.py
  1. 使/home/ec2-user/run_analyzer.sh 可执行文件(例如,使用 "chmod +x/home/ec2-user/run_analyzer.sh"(
  2. 在 boto3 脚本中使用 ssm,如下所示:
import boto3
ssm_client = boto3.client('ssm')
ssm_client.send_command(
    InstanceIds=["<put your instance id here>"],
    DocumentName="AWS-RunShellScript",
    Parameters={'commands': [
       "sudo -i -u ec2-user /home/ec2-user/run_analyzer.sh"
    ]} )

相关内容

最新更新