我想进行一个批处理,仅从 Dynamodb 导出最近 24 小时(每天晚上)的更新插入数据。它将在午夜运行,但有一些延迟。
我知道这些选项:
#1) 扫描表(并具有 updateDateTime 属性)。但随着数据的增长,它的成本将会很高($$)。
#2) 在 UpdateDate 上创建一个 GSI,并使用此分区键查询该索引(热分区问题,以及拥有 GSI 和 RCU 的额外成本)。
也尝试过这个https://aws.amazon.com/blogs/aws/new-export-amazon-dynamodb-table-data-to-data-lake-amazon-s3/ - 但它会导出所有数据,直到日期时间(而不是最后 x 小时)
尝试了 Athena 和 AWS Glue 选项,但导出的数据不是增量的
请指教是否有更好的方法?
注意:我不需要 DynamoDB 上发生的所有事件(否则流是一个选项)。我想导出一天结束时的快照(但增量)
自 2023 年 9 月起,增量导出是 DynamoDB 的原生功能。请参阅 AWS 博客介绍从 Amazon DynamoDB 到 Amazon S3 的增量导出。
该功能将现有的 DynamoDB 扩展到 S3 导出 功能,该功能以前仅支持全表导出。使用新的增量导出,您可以指定导出时间和导出时间:
aws dynamodb export-table-to-point-in-time \
--table-arn arn:aws:dynamodb:REGION:ACCOUNT:table/TABLENAME \
--s3-bucket BUCKET --s3-prefix PREFIX \
--incremental-export-specification ExportFromTime=START_OF_DAY,ExportToTime=END_OF_DAY,ExportViewType=NEW_AND_OLD_IMAGES \
--export-type INCREMENTAL_EXPORT
您可以使用 EventBridge Scheduler 每 24 小时运行一次增量导出。尽管调度程序可以直接定位API命令,但在您的情况下,我认为调度程序需要一个Lambda目标。 Lambda 将计算当天的
ExportFromTime
和 ExportToTime
并调用导出命令。