簡體   English   中英

從SQS到S3的每小時數據流

[英]Hourly data flow from SQS to S3

我有一個用例,必須遵循以下步驟:

  1. 從AWS SQS隊列讀取消息
  2. 處理收到的數據並使用從其他基於拉取的來源獲得的一些數據進行增強
  3. 每小時以前綴在AWS S3中提供增強數據

基本上,主要問題是如何和在何處緩沖數據一個小時,然后每小時僅寫入一次S3,而不是在收到SQS消息后立即寫入。 由於收到的消息數量非常大,因此無法在內存中進行緩沖。

PS AWS Firehose不能選擇,因為它不能確保完全重復刪除在S3中寫入的數據,即,如果在向S3發送寫入請求時發生客戶端故障,則可能會再次寫入相同的數據。 我們希望完全不重復的數據是S3。

讓我知道該問題的解決方案,以及是否有預先存在的技術堆棧和/或系統可以完成此任務。

謝謝!

我最近致力於實現一個AWS Lambda函數,該函數計划使用CloudWatch Events定期運行,並使用來自SQS隊列的消息並將其發送到Kinesis Firehose,以便可以將它們存儲在S3中。

我仍然建議針對此用例使用AWS Firehose。 AWS解決了許多非常復雜的可伸縮性和可用性問題,並將它們隱藏在一個看似簡單的API之后。

要解決重復數據刪除問題,了解您無法立即交付非常重要。 您可以至少擁有一次,最多可以擁有一次,但是不可能只有一次。 您可以嘗試自己實現此算法,但是這是錯誤的(因為不可能)。 對於包括我自己在內的許多人來說,可以信任AWS的實施,因為他們提供了高質量的服務和API。

為了滿足您的要求,您可以安排一個AWS Lambda函數每小時運行一次並使用SQS消息,執行其他處理,然后將它們發送到AWS Firehose。 您可以將AWS Firehose配置為具有最長的交付時間和大小提示,以便創建最少數量的文件。 這將使數據延遲大約1小時15分鍾,但是它將根據CloudWatch計划事件的間隔大約每小時在S3中創建一個文件。

這不是預先存在的技術,但是實現AWS Lambda函數所需的代碼非常簡單。 您可以簡單地從SQS中讀取消息,對記錄進行額外的增強,將它們寫入AWS Firehose,最后從SQS中刪除消息。

暫無
暫無

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

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