node.js - 使用 lambda 将文件从 URI 直接流式传输到 S3,使用大量内存

标签 node.js amazon-sns aws-lambda

我能够使用 this guys sample code 将文件直接从 URI 流式传输到 S3,而无需使用 AWS Lambda (node.js) 将其下载到磁盘上。 。我对其进行了一些修改,以便我可以从请求对象主体创建一个缓冲区。 This is my code .

除了一件非常重要的事情之外,它确实很神奇!这些文件最大为 350 MB,但每次 lambda 函数运行时,最多需要 1.5 GB 内存,甚至更多!函数调用允许的最大内存为 1.536 GB。通常使用的大小在 0.8 GB 到 1.5 GB 之间(非常随机)。

我认为某处存在内存泄漏,但我不知道在哪里!

有什么想法吗?

最佳答案

var buffer = new Buffer(body); 似乎正在内存中复制整个响应正文...使您需要的内存量增加了一倍。

request似乎提供(或可配置为提供)body 作为 Buffer ,因此您应该能够直接使用 body,而不是通过创建第二个缓冲区在内存中复制它。

关于node.js - 使用 lambda 将文件从 URI 直接流式传输到 S3,使用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863493/

相关文章:

mysql - Knex.js 查询抛出警告 "Calling knex without a tableName is deprecated"

amazon-web-services - GCP堆栈中的AWS SNS等效项

amazon-web-services - 无法使用 terraform 从自动缩放 Hook 创建 sns

node.js - 在 AWS Lambda 函数中通过 AWS SES 发送电子邮件

amazon-web-services - SAM模板环境变量使用映射、列表、关联数组?

node.js - 在 mongo 中按 id 或用户名查找

javascript - mongodb nodejs多次插入问题

node.js - Express.js 如何在登录时和之后使用安全性

amazon-web-services - 将 Google Cloud Messaging 的 'User Notification' 功能与 Amazon SNS 移动推送结合使用

javascript - 使用 Lambda 函数在 Amazon S3 中发出 Ajax 请求