我遇到了AWS數據管道模板以將數據備份到S3。但是,我不想備份整個表格。我只想保留過去7天發生的變化的快照。如何將最近7天從DynamoDB修改/創建的數據備份到S3?
我認爲解決這個問題的方法是在我的last_updated_date列的表上使用GSI來掃描已更改的記錄。現在,是否可以使用AWS Datapipelines來實現結果?
我遇到了AWS數據管道模板以將數據備份到S3。但是,我不想備份整個表格。我只想保留過去7天發生的變化的快照。如何將最近7天從DynamoDB修改/創建的數據備份到S3?
我認爲解決這個問題的方法是在我的last_updated_date列的表上使用GSI來掃描已更改的記錄。現在,是否可以使用AWS Datapipelines來實現結果?
除非這只是您的一項任務,否則我建議您使用DynamoDB Streams和Kinesis或Lambda將更改備份到持久存儲中。 DynamoDB Streams在任何DynamoDB表中捕獲時間順序的項目級修改,並將此信息存儲在日誌中長達24小時。您可以結合使用DynamoDB Streams觸發Lambda函數,並將其寫入S3並實現近乎實時的連續備份。
使用GSI可以使查找速度更快,但對於處理大型表的任務,GSI和表本身需要大量預置吞吐量。
您可以找到有關以下流相關的AWS文件:
1. Capturing Table Activity with DynamoDB Streams
2. Using the DynamoDB Streams Kinesis Adapter to Process Stream Records
也有一個不錯的博客張貼關於它的例子:
DynamoDB Update – Triggers (Streams + Lambda) + Cross-Region Replication App
希望這幫助!
你要做的事情與爲HiveCopyActivity提供的示例非常相似。該示例在兩個DynamoDB表之間複製數據。您將需要做一些修改:
output
。更改filterSql
拉過去7天的數據,是這樣的:
"filterSql" : "last_updated_date > unix_timestamp(\"#{minusDays(@scheduledStartTime,7)}\", \"yyyy-MM-dd'T'HH:mm:ss\")"
對不起,我不想做這種方式。我的工作將每週運行一次,並應允許我進行備份。我不想讓它成爲一個連續的過程。你能以這些理由提出建議嗎? – Adi
爲什麼你想每週做一次而不是連續做一次?如果你每週做一次,如果你做錯了事情(例如刪除表),你可能會丟失一週的數據。 – Guy