我应该如何将文件发布到AWS Lambda函数,处理它,并将文件返回给客户端?

问题描述 投票:3回答:1

我正在使用serverless-http在AWS Lambda上创建一个快速端点 - 一般来说非常简单。流程基本上是:

  1. 通过多部分表单将zip文件发布到我的终端
  2. 解压缩文件(包含一堆excel文件)
  3. 将文件合并到一个Excel文件中
  4. res.sendFile(file)将文件返回给用户

我不是100%坚持这个流程,但这是我想要做的事情的要点。

Lambda函数应该让我访问/tmp进行存储,所以我尝试使用Multer来存储文件,然后阅读内容,我也尝试了decompress-zip库,似乎文件永远不会“工作”。我甚至尝试过上传图像并立即将其发回。它发回一个名为incoming.[extension]的文件,但它总是腐败。我错过了什么吗?有一个更好的方法吗?

amazon-web-services aws-lambda multer serverless-framework
1个回答
2
投票

通常在处理文件时,方法是使用S3作为存储,并且有几个原因,但最重要的一个是Lambda has an event size limit of 6mb,所以你不能轻易地将一个巨大的文件直接发布到它。

如果您的压缩excel文件总是小于那个,那么您在这方面是安全的。如果没有,那么你应该研究一个不同的流程,也许是使用AWS step functions和Lambda和S3的东西。

关于解压缩文件的问题,我亲自使用过,可以推荐adm-zip,它看起来像这样:

//unzip and extract file entries
var zip = new AdmZip(rawZipData);
var zipEntries = zip.getEntries();
console.log("Zip contents : " + zipEntries.toString());
zipEntries.forEach(function(entry){
    var fileContent = entry.getData().toString("utf8");
});
© www.soinside.com 2019 - 2024. All rights reserved.