簡體   English   中英

如何使用AWS Lambdas處理多個扇出

[英]How to handle multiple fan-outs using AWS Lambdas

我有一個AWS Lambda,它可以啟動(SNS事件)多個Lambda,而后者又可以啟動(SNS事件)多個Lambda。 所有這些lambda都將文件寫入S3,我需要知道何時已寫入所有文件。 將有另一個lambda,它將發送最終的SNS消息,其中包含對所生成文件的所有引用。 第二組Lambda中的扇出量未知,具體取決於第一個扇出。

如果這是一次扇出,那么我會知道要查找多少個文件,但是由於是兩步扇出,所以我不確定如何監視所有文件。 有人處理過嗎? 謝謝。

我將創建一個DynamoDB表來跟蹤此過程。 當初始Lambda函數啟動時,在表中創建一條記錄,並使用唯一ID(例如UUID)或其他名稱(如果您對此過程還沒有唯一ID)的話。 還要將該唯一ID添加到SNS消息中,這將是其他進程執行的所有更新所使用的密鑰。 當第一個進程創建了splitters_invoked記錄時,還添加了一個它正在調用的第二級splitter函數的數量,並且splitters_complete屬性設置為0。

在第二級拆分器功能內​​,您可以使用DynamoDB功能“ 條件更新”來更新DynamoDB記錄,以及使用S3位置創建的文件列表。 第二級拆分器功能還將使用DynamoDB 原子計數器功能在它們退出之前更新splitters_complete計數。

在“流程”級別,這些調用中的每一個都將對DynamoDB記錄執行另一個條件更新 ,將其剛剛處理的單個文件標記為已完成。

最后,配置DynamoDB流以觸發另一個Lambda函數。 此lambda函數將檢查兩個條件: splitters_complete等於splitters_invoked ,並且文件列表中的所有文件都標記為“已完成”。 然后它將知道它可以執行過程的最后一步。


另外,如果您不想在DynamoDB表中保留S3文件位置的列表,也只需使用原子計數器,一個計數器用於第二級拆分器創建的文件總數,另一個計數器用於文件處理功能。

暫無
暫無

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

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