从 Dynamodb 增量导出数据(例如:过去 24 小时)

问题描述 投票:0回答:1

我想进行一个批处理,仅从 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 上发生的所有事件(否则流是一个选项)。我想导出一天结束时的快照(但增量)

amazon-web-services amazon-s3 amazon-dynamodb aws-glue amazon-athena
1个回答
0
投票

自 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
并调用导出命令。

© www.soinside.com 2019 - 2024. All rights reserved.