从AWS Lambda NodeJs应用流到文件系统?

时间:2019-04-02 18:38:18

标签: node.js amazon-web-services aws-lambda

我有一个AWS Lambda函数(NodeJS),该函数可构建巨大的数据结构。

建立数据结构会消耗大约2 GB的内存。

最后,我想将数据作为文件/对象推送到S3。

最简单的方法是将结构转换为巨大的字符串,写入/ tmp,然后推送到S3,但是这种方法会破坏3GB的内存限制。

我想知道是否有一种逐行写入/ tmp的方法,这样就不会耗尽我的剩余内存。

有人可以指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

AWS Lambda / tmp实际上只有512 MB of space,并且是对该函数内存的单独限制。

您可能会达到3 GB的限制,因为您将结构转换为内存中的字符串,这意味着您拥有2 GB的原始数据,然后有2 GB的字符串转换(嗯,先是1 GB,然后是一个错误)

您提到自己拥有:

  

可构建巨大数据结构的AWS Lambda函数(NodeJS)。

但是,通常在处理大数据时,该方法是在多个Lambda之间分配工作负载,从不将其加载到单个Lambda中,因为这与Lambda的设计背道而驰(内存限制是明确的指示)。 >

因此,如果可能的话,我建议在多个Lambda之间分配工作负载,但是如果在您的用例中无法做到这一点,则可以考虑使用AWS EC2或更容易使用AWS Fargate,其中这样您就不会遇到Lambda的任何限制。