我一直在努力使以下代码正常工作。我正在使用无服务器框架,当在本地调用时,它可以很好地工作。我有一个完整的工作流程,在下载回文件并上传到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的方法。我正在运行节点8.10。作为Lambda运行时,它只是不起作用。它只是超时。
我的问题是,我看不到完整的示例。任何帮助将不胜感激。
答案 0 :(得分:0)
我设法使它正常工作。 Lambda,确实在某些错误报告方面做得不好。
问题是我从中下载的存储桶与Lambda所在的区域不同。显然,在本地运行该存储桶没有什么影响。
所以...对于可能会踩到这里的其他人...检查您的铲斗相对于Lambda区域的位置。