通过AWS lambda在EC2实例上执行python脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过AWS lambda在EC2实例上执行python脚本相关的知识,希望对你有一定的参考价值。
我在运行24/7的Linux上有一个AWS EC2实例,其中包含一组运行正常的python文件。从外壳,我可以输入python python_script.py var1 var2
。 var1和var2是值小于5,000的简单整数。
我能够设置AWS API来接收将这些变量作为环境变量传递的HTTPS请求。然后,当触发API时,我可以使用AWS lambda运行一些代码。
我一生无法弄清楚在lambda函数中包括哪些代码,以便在具有两个变量的EC2实例上运行python脚本。我发现的所有与此问题相关的结果都与启动EC2实例,运行没有任何变量的命令或设置具有域的整个Web服务器以及所有用于接收HTTPS请求的脚本有关。我只是希望能够从远程位置访问API,提供两个整数,然后使用这些整数运行python文件。
我确实找到了关于How to run a script on your aws-ec2 from a script on your local machine?的建议
ssh -i key.pem ubuntu@ec2-instance "bash /path/to/your/script/data.sh"
因此,对于我自己的用例,我尝试将其修改为:
ssh -i python_bot.pem ubuntu@ec2-instance "python Python_Project/python_script.py 2 166"
但是,当我从自己的shell运行此代码时,得到的是bash: python: command not found
。这很奇怪,因为如果我执行ssh -i python_bot.pem ubuntu@ec2-instance
,然后登录后再执行python Python_Project/python_script.py 2 166
,则文件将成功运行。我想如果我能解决这个问题,那么我可以尝试从Can bash script be written inside a AWS Lambda function
我也找到了Running Python Script in an existing EC2 instance on AWS,虽然答案为我提供了一些指导,但范围太广,无法提供具体的解决方案。
通过SSH登录shell和运行命令可能具有不同的环境变量,尤其是此处的PATH
。明确说明口译员应该有所帮助。
登录到实例,查看您使用的是哪个Python:
which python
然后将其替换为您的SSH命令行,例如
ssh -i python_bot.pem ubuntu@ec2-instance "/usr/bin/python Python_Project/python_script.py 2 166"
以上是关于通过AWS lambda在EC2实例上执行python脚本的主要内容,如果未能解决你的问题,请参考以下文章
在创建新的 AWS EC2 实例时运行 AWS Lambda 代码
AWS:Lambda函数无法使用EC2实例的私有API调用rest api