簡體   English   中英

我應該如何將文件發布到AWS Lambda函數,處理它,並將文件返回給客戶端?

[英]How should I post a file to AWS Lambda function, process it, and return a file to the client?

我正在使用serverless-http在AWS Lambda上創建一個快速端點 - 一般來說非常簡單。 流程基本上是:

  1. 通過多部分表單將zip文件發布到我的終端
  2. 解壓縮文件(包含一堆excel文件)
  3. 將文件合並到一個Excel文件中
  4. res.sendFile(file)將文件返回給用戶

我不是100%堅持這個流程,但這是我想要做的事情的要點。

Lambda函數應該讓我訪問/tmp進行存儲,所以我嘗試用Multer來存儲文件,然后閱讀內容,我也試過了decompress-zip庫,看起來這些文件永遠不會“工作” ”。 我甚至嘗試過上傳圖像並立即將其發回。 它發回一個名為incoming.[extension]的文件,但它總是被破壞。 我錯過了什么嗎? 有一個更好的方法嗎?

通常在處理文件時,方法是使用S3作為存儲,並且有幾個原因,但最重要的一個事實是Lambda的事件大小限制為6mb ,因此您無法輕松POST一個巨大的文件直接到它。

如果您的壓縮excel文件總是小於那個,那么您在這方面是安全的。 如果沒有,那么你應該研究一個不同的流程,也許是使用AWS步驟函數和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");
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM