原因是当使用 ssm runShellScript 向 ec2 实例发送命令时,您以“root”身份运行,我假设它没有安装 sqlalchemy 库。您需要以“ec2-user”(或您安装了 sqlalchemy 的任何用户帐户)身份运行。
我使用以下方法使其工作:
- 在 /home/ec2-user/run_analyzer.sh 中创建一个包含以下内容的文件:
cd <folder that contains analyzer.py>
python analyzer.py
- 使 /home/ec2-user/run_analyzer.sh 可执行(例如,使用“chmod +x /home/ec2-user/run_analyzer.sh”)
- 在您的 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"
]} )