gpt4 book ai didi

python - 通过 AWS lambda 在 EC2 实例上执行 python 脚本

转载 作者:行者123 更新时间:2023-12-04 00:01:27 26 4
gpt4 key购买 nike

我在 linux 上有一个 24/7 全天候运行的 AWS EC2 实例,其中有一组运行正常的 python 文件。从 shell 中,我可以输入 python python_script.py var1 var2 . var1 和 var2 只是值小于 5,000 的整数。

我能够设置 AWS API 以接收将这些变量作为环境变量提供的 HTTPS 请求。然后我可以使用 AWS lambda 在 API 被触发时运行一些代码。

我一生都无法弄清楚要在 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虽然答案给了我一些指导,但它太宽泛而无法帮助提供特定的解决方案。

最佳答案

从 AWS Lambda 函数触发 Amazon EC2 实例上的脚本不是一个好的架构设计。

Running Python Script in an existing EC2 instance on AWS 中所述(您链接到的),计算机通常不喜欢“推送”到它的东西,除非它作为网络服务器运行。

相反,我想向您建议不同的架构 :

  • Lambda 函数将“作业”推送到 亚马逊 SQS 队列
  • Amazon EC2 实例上的代码 定期检查(“轮询”)SQS 队列 查看是否有任何消息可用
  • 如果有消息可用,它使用消息的内容到 触发一些本地工作 在 EC2 实例上

  • 这样,两个系统断开连接,但通过 SQS 队列进行通信。它还有一个额外的好处,如果 EC2 实例繁忙或离线,消息(作业)会在 SQS 队列中累积,直到它们可以被处理。

    这种架构比尝试使用 SSH 或 SCP 来触发作业要好(这不是一种非常“云”的系统架构方式)。

    关于python - 通过 AWS lambda 在 EC2 实例上执行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60566124/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com