簡體   English   中英

我如何從 aws 中的多個 lambda 聚合數據

[英]How can i aggregate data from multiple lambdas in aws

我有SNS Topic ,可在Multiple Accounts觸發50 Lambdas

現在每個 lambda 都以json格式生成一些輸出。

我想將所有這些單獨的 json 聚合到一個列表中,然后將其傳遞到另一個SNS Topic

什么是最好的聚合數據

您可以使用多種架構解決方案來解決此問題。 可能沒有“正確的”,這取決於數據量、觸發頻率和預算。

您將需要一些共享存儲空間,您的 50 個 lambdas 函數可以在其中臨時存儲其結果,以及另一個組件,很可能是另一個負責聚合以生成最終結果的 lambda 函數。

根據要處理的數據量,我首先考慮一個共享的 Amazon S3 存儲桶,其中所有 50 個函數都可以刪除它們的 JSON 片段,而聚合函數可以讀取和組裝所有片段。 其他可以充當共享存儲的服務是 Amazon DynamoDB 和 Amazon Kinesis。

困難將是檢測何時所有部分都可用於開始最終聚合。 如果 50 是一個固定數字,那將很容易,否則您將需要考慮一種機制來告訴聚合函數它可以開始工作......

您描述的場景與您選擇的架構模式並不真正匹配。 如果您預先知道您將不得不處理狀態(聚合跟蹤狀態)SNS 和 SQS 不是正確的解決方案,Lambda 也不是。

其他帖子中沒有提到的是,您必須管理這樣一個事實,即您的 50 個進程中的一個可能會失敗。 你也必須考慮到這一點。 處理所有這些情況不應該是您的重點,因為有工具可以為您做這些。

我建議你看看 AWS Kinesis: https : //docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html

此外,AWS Step Functions 提供了一個解決方案: https : //docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-parallel-state.html

如果存儲的數據適用於該信息,我建議查看 DynamoDB 來聚合信息。

各個組件可以異步刪除它們的數據,然后聚合器可以執行單個查詢以獲取整個結果集。

雖然它被描述為一個數據庫,但它可以被視為一個簡單的對象存儲或查找引擎,因此您不必真正考慮數據鍵,只是一種將每個貢獻與其他貢獻區分開來的方法。

因此,您可能會存儲在“lambda-id + timestamp”下,以確保每條記錄都是不同的,然后您就可以檢索所有記錄。 別忘了有辦法讓記錄退休,這樣系統就不會填滿!

暫無
暫無

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

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