簡體   English   中英

當S3中的多個文件准備好時如何觸發AWS Lambda function

[英]How to trigger AWS Lambda function when multiple files in S3 are ready

我正在嘗試使用 AWS Lambda/S3 構建一個服務,該服務將用戶 email 作為輸入,並輸出帶有 PDF 附件的響應 email。 我發送給用戶的最終 PDF 是通過將我在此過程中基於輸入 email 生成的兩種類型的 PDF 合並在一起生成的。 下圖中可以找到完整的架構圖。

架構圖

我遇到的問題是關於合並 PDF Lambda function,它接收類型 1 和類型 2 PDF 並生成類型 3 ZBCD1B68617759B1DFCFF0403A6B5A8D1。 一旦一組完整的類型 1 和 2 PDF 准備好並在 S3 中等待,我需要它觸發。 For example, a user sends an email and the Parse Email function kicks off the production of one type 2 PDF and fifty type 1 PDFs - as soon as these 51 PDFs are generated I want the Merge PDFs function to run. 一旦 S3 中的一組多個文件准備就緒,如何讓 AWS Lambda function 觸發?

據我所知,沒有一個觸發器會在引發事件之前等待將幾件事放入一個或多個存儲桶中的 S3 中。

我最初考慮在創建后綴為“50.pdf”的文件時使用 s3 觸發器,但這留下了很多問題,比如先完成什么以及如果 something50.pdf 無法生成會發生什么。 但是,如果您確實想沿着這條路線走 go, 這里有 AWS 提供的一些很好的文檔。

另一種方法是讓生成類型 1 和 2 pdf 的 lambda 在完成處理后調用 Merge PDF Lambda。

您將需要某種外部 state 保存在某處(如 db),其中記錄了某種 id(可能包括類型 1 和 2 pdfs 的命名),如果類型 1 pdf 生成完成並且類型 2 pdf 生成完成。

因此,Parse Email Lambda 需要在執行工作之前為數據庫播種參考。 Then the URL to PDF Lambda would record on the db that it had finished and check the db if the HTML to PDF Lambda had finished. 如果是這樣,調用 Merge PDF Lambda(可能通過 SNS)或者如果沒有完成。 HTML to PDF Lambda would do the same thing, except it would check to see if the URL to PDF Lambda had finished before starting the merge or finishing.

另外,我可能會在合並 PDF Lambda 結束時觸發 Clean Buckets Lambda。 這樣,您可以檢查未處理的工作 Lambda,它每小時觸發一次,並在發現存儲桶中的任何內容早於 x 時發出某種形式的通知。

暫無
暫無

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

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