簡體   English   中英

只有在 S3 上完成批量上傳后,如何觸發 AWS lambda 函數?

[英]How do I trigger a AWS lambda function only if bulk upload finished on S3?

我們在下面有一個簡單的 ETL 設置

  1. 供應商將爬取的 parquet 數據上傳到我們的 S3 存儲桶。
  2. S3 事件觸發一個 lambda 函數,該函數將觸發膠水爬蟲更新膠水中現有的表分區。

這在大多數情況下都可以正常工作,但在某些情況下,我們的供應商可能會在短時間內連續上傳文件,例如在刷新歷史數據時。 這將導致問題,因為膠水爬蟲無法同時運行並且作業將失敗。

我想知道我們是否可以做些什么來避免潛在的錯誤。 我研究了SQS ,但不確定這是否對我有幫助,以下是我想要實現的目標:

  1. 供應商將文件上傳到 S3。
  2. S3 向 SQS 發送事件。
  3. SQS 保持事件,等到在給定的時間段內沒有其他后續事件,比如 5 分鍾。
  4. 在 5 分鍾內沒有進一步事件后,SQS 觸發 lambda 函數運行膠水爬蟲。

這對 S3 和 SQS 可行嗎?

SQS舉辦活動,

是的,您可以這樣做,因為您可以將SQS 延遲設置為最多 15 分鍾。

等到在給定的時間段內沒有其他后續事件,比如 5 分鍾。

不,沒有自動化的方法。 您必須開發自己的定制解決方案 最簡單的方法是不將 SQS 與 lambda 捆綁在一起,而是讓 lambda 按計划運行(例如每 5 分鍾一次)。 Lambda 必須有邏輯來確定一段時間后是否沒有新文件上傳,然后觸發您的 Glue 作業。 這可能會涉及到 DynamoDB 來跟蹤 lambda 執行之間最后上傳的文件。

暫無
暫無

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

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