【发布时间】:2019-08-30 15:04:55
【问题描述】:
我的目标是创建一个大的压缩文本文件并将其放入 S3。
文件内容由我从另一个来源循环读取的块组成。
由于此文件的大小,我无法将所有数据保存在内存中,因此我需要以某种方式将其同时直接流式传输到 S3 和 ZIP。
我了解如何使用 Node.JS 中的常规 fs 执行此技巧,但我很困惑是否可以使用 AWS Lambda 中的 S3 执行相同的技巧?我知道s3.putObject can consume streamObject,但在我看来,当我执行putObject 操作时,这个流应该已经完成了,什么会导致超出允许的内存。
【问题讨论】:
-
压缩后的文件是否大于 Lambda 临时磁盘 (512 MB) 的容量?
-
@jarmod 可能没有,但假设我受到 128Mb lambda 的限制
-
如果您可以摄取整个文本文件,以 gzip 格式保存到本地磁盘,然后在 Lambda 超时时间内将其全部上传到 S3,那么这应该很简单。想必大家可以使用分段上传到 S3 (docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) 来避免一次无法将整个文件读入内存的问题。
-
文件在哪里?它可以在本地应用程序使用还是需要通过 http 读取?我们在这里讨论的文件大小是多少?
-
所以解决方案本质上是将所有内容存储在内存中(例如临时磁盘),对吗?
标签: node.js amazon-web-services amazon-s3 aws-lambda aws-sdk-nodejs