【问题标题】:How to run a Python script from a Node.js AWS Lambda Function如何从 Node.js AWS Lambda 函数运行 Python 脚本
【发布时间】:2019-06-11 15:31:20
【问题描述】:

here 所述,可以从 Node.js Lambda 函数运行非 Node.js 可执行文件。

拥有 Node.js Lambda 函数我想使用 Node.js 的 child_process 命令运行 Python 脚本。

我遵循this AWS 教程并在我的 .js 函数的开头包含以下内容:

process.env[‘PATH’] = process.env[‘PATH’] + ‘:’ + process.env[‘LAMBDA_TASK_ROOT’];

主要的 Python 脚本调用从这里开始:

const { spawn } = require('child_process');

function calculateSomething(next) {
  var script = spawn('python', ['my_python_script.py', args]);

  script.stdout.on('data', (data) => { doSomething(data); });
  script.on('error', (error) => { console.error(error); });
  script.on('exit', () => { next(); });
}

Python 脚本使用外部库(例如 numpy)运行,所以我必须使用 pip 安装它。

现在:

  • 如何在 Node.js Lambda 中安装 pip 库?
  • 将我的 Python 脚本与 Node.js 函数链接以在我的 .js 函数的开头添加此 process.env[‘PATH’] = process.env[‘PATH’] + ‘:’ + process.env[‘LAMBDA_TASK_ROOT’]; 是否足够?

类似于this其他问题。

【问题讨论】:

  • 你可以从 node.js 的 lambda 函数中调用另一个基于 python 的 lambda 函数吗?
  • @NiroshanRanapathi 如果可能的话,我宁愿不创建另一个 Lambda 并在同一个函数上运行 Python 脚本。顺便说一句,如果该解决方案使其运行得更快,我会考虑这一点。谢谢!
  • 嗯,AWS 常见问题的深入阅读表明,事实上,这是可能的: 问:我可以从用 Node.js 编写的 AWS Lambda 函数中执行其他程序吗?是的。 Lambda 的内置沙箱允许您运行批处理(“shell”)脚本、其他语言运行时、实用程序例程和可执行文件。 aws.amazon.com/blogs/compute/running-executables-in-aws-lambda
  • 我认为 python 可用的事实只是因为有一个通用的 Amazon Linux 基线。如果您尝试在 python 运行时 lambda 中查找“节点”,它将不存在(在 python 3.7 上测试)
  • 刚刚在节点 JS 12 运行时测试,似乎他们现在删除了 python,这失败了 spawn('python', ['--version']);Error: spawn python ENOENT。文章只提到了运行其他可执行文件,但 runtime 和 exec 都是针对节点的。

标签: python node.js aws-lambda


【解决方案1】:

您需要custom runtime 才能运行多种语言

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2021-11-15
    • 2020-12-11
    • 2015-02-18
    相关资源
    最近更新 更多