2

我遇到了AWS數據管道模板以將數據備份到S3。但是,我不想備份整個表格。我只想保留過去7天發生的變化的快照。如何將最近7天從DynamoDB修改/創建的數據備份到S3?

我認爲解決這個問題的方法是在我的last_updated_date列的表上使用GSI來掃描已更改的記錄。現在,是否可以使用AWS Datapipelines來實現結果?

回答

2

除非這只是您的一項任務,否則我建議您使用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

希望這幫助!

+0

對不起,我不想做這種方式。我的工作將每週運行一次,並應允許我進行備份。我不想讓它成爲一個連續的過程。你能以這些理由提出建議嗎? – Adi

+2

爲什麼你想每週做一次而不是連續做一次?如果你每週做一次,如果你做錯了事情(例如刪除表),你可能會丟失一週的數據。 – Guy

1

你要做的事情與爲HiveCopyActivity提供的示例非常相似。該示例在兩個DynamoDB表之間複製數據。您將需要做一些修改:

  • S3DataNode指向要備份保存桶更換output
  • 更改filterSql拉過去7天的數據,是這樣的:

    "filterSql" : "last_updated_date > unix_timestamp(\"#{minusDays(@scheduledStartTime,7)}\", \"yyyy-MM-dd'T'HH:mm:ss\")"