我遇到了AWS datapipeline模板,用于将数据备份到S3。但是,我不想备份整个表。我只想保留过去7天内发生的变化的快照。
我认为解决这个问题的方法是在last_updated_date列上的表格上有一个GSI来扫描更改的记录。现在,是否可以使用AWS Datapipelines来实现结果?
答案 0 :(得分:2)
除非这只是您的一次性任务,否则我建议您使用DynamoDB Streams和Kinesis或Lambda来备份对持久存储的更改。 DynamoDB Streams捕获任何DynamoDB表中按时间排序的项级修改序列,并将此信息存储在日志中长达24小时。您可以结合DynamoDB Streams触发Lambda函数,并使其对S3进行写入更改,并实现近乎实时的连续备份。
使用GSI,您当然可以更快地进行查找,但是您需要为GSI配置大量预配置吞吐量容量,并为处理大型表的任务提供表本身。
您可以在下面找到有关Streams的相关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
希望这有帮助!
答案 1 :(得分:1)
您尝试做的与HiveCopyActivity提供的示例非常相似。该示例在两个DynamoDB表之间复制数据。您需要进行一些更改:
output
替换为S3DataNode,指向要保存备份的存储区。更改filterSql
以提取最近7天的数据,例如:
"filterSql" : "last_updated_date > unix_timestamp(\"#{minusDays(@scheduledStartTime,7)}\", \"yyyy-MM-dd'T'HH:mm:ss\")"