簡體   English   中英

從S3復制數據並進行后期處理

[英]Copy data from S3 and post process

有一項服務可在S3存儲桶中生成用於倉庫查詢的數據。 數據作為日常機制插入S3。

我有興趣將數據從S3復制到我的服務帳戶,以進一步對數據進行分類。 分類需要在我的AWS服務賬戶中進行,因為它基於我的服務賬戶中存在的信息。 分類需要在我的服務帳戶中進行,因為它是針對我的團隊/服務的。 在S3中生成數據的服務既不關心分類,也不關心做出分類的數據。

每個S3文件都由json對象(記錄)組成。 對於每條記錄,我需要查看一個dynamodb表。 根據Dynamo表中是否存在數據,我需要在json對象中包括一個附加屬性,並將該列表存儲到我帳戶中的另一個S3存儲桶中。

我正在考慮這樣做的方式:

  • 定期觸發預定的CW事件以調用Lambda,該Lambda會將文件從Source S3存儲桶復制到我帳戶中的存儲桶(假設為存儲桶A)中。
  • 然后,使用另一個調度的CW事件來調用Lambda以讀取json中的記錄,並與dynamodb表進行比較以確定分類並將更新后的記錄寫入另一個存儲桶(例如存儲桶B)。

我對此有幾個問題:

  1. 有更好的替代方案來實現這一目標嗎?
  2. 在第一個Lambda中使用aws s3 sync是實現這一目標的好方法嗎? 我擔心的是,由於大量數據導致Lambda超時,尤其是對於第二個Lambda,它需要針對每條記錄與DDB進行比較。

您可以實時觸發AWS Lambda函數,而不是設置計划事件。

在源存儲桶中創建文件后,立即使用Amazon S3 Events 觸發Lambda函數 Lambda函數可以調用CopyObject()將對象復制到Bucket-A進行處理。

同樣,Bucket-A上的事件然后可以觸發另一個Lambda函數來處理文件。 注意事項:

  • Lambda函數最多運行15分鍾
  • 您可以增加分配給Lambda函數的內存 ,這也將增加分配的CPU數量。 因此,如果花費的時間超過15分鍾,則可能會加快功能的運行速度。
  • Lambda函數最多可使用512MB的存儲空間。

如果數據太大或處理時間太長,那么您將需要找到一種在AWS Lambda之外進行處理的方法。 例如,使用Amazon EC2實例。

如果你可以從DynamoDB導出數據 (可能是定期),您也許能夠使用亞馬遜雅典娜做所有的處理,但是這取決於你想做什么。 如果它是簡單的SELECT / JOIN查詢,則可能合適。

暫無
暫無

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

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