在NodeJS上调用AWS Lambda上的R脚本

由于几个小时的无果search,我发布这个问题。 我想这是一个重复的这一个: 你如何运行AWS Lambda与NodeJS RServe? 但是,由于这个问题的作者似乎没有成功完成他的目标,我将再次尝试。

我目前有什么:

一个NodeJS服务器,通过Rserve调用一个R脚本,并通过node-rio传递数据进行评估。

负责的function如下所示:

const R = (arg1, arg2) => { return new Promise((resolve, reject)=>{ const args = { arg1, arg2 }; //send data to Rserve to evaluate rio.$e({ filename: path.resolve('./r-scripts/street.R'), entrypoint: 'run', data: args, }) .then((data)=>{ resolve(JSON.parse(data)); }) .catch((err)=>{ reject(`err: ${err}`); }); }); }; 

这工作得很好。 我正在将数据发送到我的R实例,并将结果返回到我的服务器。

我最终想要实现的是:

每个请求似乎都产生了自己的R工作空间,这个空间有相当大的内存开销。 因此,使用这种方法即使服务数百个并发请求也是不可能的,因为我的AWS EC2内存很快就会耗尽。 所以,我正在寻找一种方法将所有内存密集型部件部署到AWS Lambda,从而消除内存开销。

我想,在我的情况下的具体问题是,如果有一种方法来包装R和Rserve与NodeJS lambda函数在一起。 或者,如果有一种方法让我确信这种方法不能使用lambda,我应该尝试寻找替代scheme。

注意:除了R之外,我不能使用任何东西,因为这些是外部R脚本,我必须从服务器调用它。

提前致谢!