【问题标题】:AWS lambda function -how to get R script to run from node.js lambda function?AWS lambda 函数 - 如何让 R 脚本从 node.js lambda 函数运行?
【发布时间】:2021-12-03 04:36:50
【问题描述】:

我已有一个 AWS lambda 函数,其触发事件是对特定 S3 存储桶的任何更新。我需要通过一些R 脚本 运行这个S3 输入。运行时是 node.js 和其他事件取决于这是一个 node.js 配置。我需要运行的脚本必须是 R 语言,因为其他语言不适合。

如何让 R 脚本从此 node.js lambda 函数运行?

  • 事件类型:所有对象创建事件
  • 运行时:Node.js 14.x

【问题讨论】:

标签: javascript r amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

如果您想尝试在同一个 lambda 中运行两种语言,您唯一的选择是为安装了这两种语言的 lambda 容器部署自定义 Docker 映像。

但是。它不像有一个命令行供您访问,因此除非您编写 nodejs lambda 代码来调用 R 脚本并等待它的响应(这在技术上是可能的),否则您将无法调用它。

您最好部署第二个带有自定义 docker 的 lambda,它上面只有 R(因为 R 不是 lambda 支持的语言),然后使用 SDK 调用该 lambda 并等待它的响应。

不过,this article 表示有一个 lambda 层可以为您提供 R 访问权限 - 您应该检查一下

【讨论】:

  • 谢谢。 lambda 容器的 docker 映像可以使用与另一个 lambda 函数相同的触发器吗? node.js lambda 需要与我的 lambda 相同的 s3 触发器。
  • 泊坞窗图像不使用 Lambda 中的任何触发器。当您为 Lambda 部署选择 Docker 映像时,它会将其用作 Lambda 的后端。其他一切都通过服务之间的 AWS Api 处理 - 包括 s3 文件触发器。您可以根据需要从同一个触发器触发任意数量的 lambda,只要它们都在监听它。
  • 哦,好的,很酷。因此,从本质上讲,docker 映像可以让您绕过 AWS lambda 触发器限制,即每个触发器事件只有一个 lambda 函数。我理解的对吗?
  • 不,一点也不。那不是这样做的。每次调用您仍然只能获得一个 lambda 触发器 - 这就是 Lambda 的扩展方式。它们不是服务器,它们是可以同时调用多次的单个函数。为了使两种语言都可用,需要 docker 映像 - lambda 的标准映像每个映像仅安装一种语言。其余的将使用节点 js 代码调用 R 脚本并在 lambda 处理程序中运行它。
  • 哦,好的,谢谢。如何使用 node js 代码调用 R 代码?我没有看到任何这样的例子。我发现了这个 stackoverflow 讨论。 stackoverflow.com/questions/23450534/…
猜你喜欢
  • 2019-06-11
  • 1970-01-01
  • 2019-05-05
  • 2021-09-23
  • 1970-01-01
  • 2021-11-15
  • 2021-09-19
  • 2020-11-10
  • 2019-07-30
相关资源
最近更新 更多