我有一个AWS Lambda函数(NodeJS),该函数可构建巨大的数据结构。
建立数据结构会消耗大约2 GB的内存。
最后,我想将数据作为文件/对象推送到S3。
最简单的方法是将结构转换为巨大的字符串,写入/ tmp,然后推送到S3,但是这种方法会破坏3GB的内存限制。
我想知道是否有一种逐行写入/ tmp的方法,这样就不会耗尽我的剩余内存。
有人可以指出我正确的方向吗?
谢谢!
答案 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的任何限制。