我目前正在將一個大小為 250 MB 和 100 萬條記錄的文件上傳到 AWS S3 Bucket(B1) 中。這會觸發一個 Lambda(L1 - 1.5GB,3 分鐘),它會讀取此文件并使用某些標準對記錄進行分組,并在不同的存儲桶(B2)上再次將大約 25K 文件寫入 S3?,F在,在 Bucket (B2) 上配置的通知事件會生成 25K 事件(請求)到不同的 Lambda(L2 - 512MB,2Mins,Concurrency-2)。這個 Lambda 調用一個基于 Java 的微服務,它在處理后進入數據庫,每次調用大約需要 1-2 秒。這里的問題是,一旦觸發了 2nd Lambda (L2),就無法阻止它。它運行了幾個小時并且在完全處理所有事件之前沒有接收到同一個 lambda 的任何其他事件并且我無法控制已經觸發的 S3 事件。有人可以解釋一下在 Amazon S3 上處理文件上傳(架構)時如何在 S3 上觸發事件以及如何對觸發的 S3 事件進行細粒度控制嗎?我可以在 AWS Lambda 端做些什么來阻止已經觸發的 S3 事件嗎?
1 回答
DIEA
TA貢獻1820條經驗 獲得超3個贊
B2當您一次編寫 25K 個對象時,我不認為設置通知事件是最佳選擇。我認為可以簡化流程。
Lambda L1寫入 25K 對象B2可以創建一個正在寫入的對象鍵數組并將其放入B2. 確保將其寫入單獨的文件夾,并在該文件夾中設置通知事件,而不是在寫入 25K 文件的位置。L2當您編寫包含 25K 個對象的鍵的文件時將觸發,它可以傳遞給您的microservice.
使用 SNS 的另一種選擇
Lambda L1寫入 25K 對象B2可以創建正在寫入的對象鍵數組并將其發布到 SNS 主題。SNS 消息大小為 256 KB,足以滿足您的用例您
mircoservice可以訂閱 SNS 主題以接收對象鍵并在數據庫中進行條目
添加回答
舉報
0/150
提交
取消
