我试图使用Lambda的ssm runShellScript在ec2实例上运行python脚本。使用创建文本文件的简单脚本进行测试时,它可以正常运行。我可以在ec2上看到该文本文件。但是,当尝试运行预期的python脚本(analyzer.py)时,出现以下错误:'ImportError:没有名为sqlalchemy的模块'
脚本analyzer.py使用了sqlalchemy模块。当我直接从ec2服务器运行analyzer.py时,脚本运行良好。有想法吗?
答案 0 :(得分:1)
原因是当使用 ssm runShellScript 向 ec2 实例发送命令时,您以“root”身份运行,我认为它没有安装 sqlalchemy 库。您需要以“ec2-user”(或安装了 sqlalchemy 的任何用户帐户)身份运行。
我使用以下方法使其工作:
cd <folder that contains analyzer.py>
python analyzer.py
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"
]} )