如何使用AWS Lambda(javascript)下载大型S3文件



我一直在努力让以下代码正常工作。我使用的是无服务器框架,它在本地调用时工作得很好。我有一个完整的工作流程,在上传回S3之前,我将下载的文件进行处理。理想情况下,我想一行一行地处理,但首先要循序渐进!

我可以毫无问题地从S3下载一个小文件,但我正在处理的文件要大得多,不应该在内存中。

const AWS = require("aws-sdk");
const S3 = new AWS.S3();
const fs = require("fs");
module.exports = async function (event, context, callback) {
let destWriteStream = fs.createWriteStream("/tmp/a.csv");
let s3Input = { Bucket : "somebucket", Key : "somekey.csv" };
await new Promise((resolve, reject) => {
let s3Stream = S3.getObject(s3Input)
.createReadStream()
.on("close", function() {
resolve("/tmp/a.csv");
})
.pipe( destWriteStream );
}).then(d => {
console.log(d);
});
callback( null, "good" );
};

我尝试了很多不同的方法,包括Promise。我正在运行Node 8.10。它只是在作为Lambda运行时不起作用。它只是超时了。

我的问题是,我很少看到完整的例子。如有任何帮助,我们将不胜感激。

我设法做到了。Lambda在一些错误报告方面确实做得不好。

问题是,我下载的bucket来自与Lambda所在地区不同的地区。显然,在本地运行它时,这并没有什么区别。

所以。。。对于其他可能踏入这里的人。。。检查您的铲斗相对于Lambda地区的位置。

相关内容

  • 没有找到相关文章

最新更新