我们需要对 Amazon DynamoDB 中的数据进行分析。由于由于 DDB 的分析限制,在 DDB 中执行此操作不是一个选择,因此根据我倾向于 DDB -?> S3 -> Athena 的建议。
它是一个数据密集型应用程序,数据流来自 AWS IoT 设备,也是一个多租户应用程序。现在,要将数据从 DDB 同步到 Amazon S3,一天可能需要几次。我们如何为此目的设置增量导出?
有一个 Athena 连接器,可以直接使用 SQL 查询查询 DynamoDB 表中的数据。
https://docs.aws.amazon.com/athena/latest/ug/athena-prebuilt-data-connectors-dynamodb.html
https://dev.to/jdonboch/finally-dynamodb-support-in-aws-quicksight-sort-of-2lbl
此用例的另一个解决方案是您可以编写一个 AWS Step Functions 工作流程,在调用该工作流程时,可以从 Amazon DynamoDB 表中读取数据,然后将数据格式化为您想要的方式,并将数据放入 Amazon S3 存储桶(显示类似用例的示例即将推出):
这是相反的(这里源是 Amazon S3 存储桶,目标是 Amazon DynamoDB 表),但您可以构建工作流,以便目标是 Amazon S3 存储桶。由于它是一个工作流程,因此您可以使用 Lambda 函数,该函数根据 CRON 表达式安排每天触发几次。此 Lambda 函数的工作是使用 Step Functions API 调用工作流程。
DynamoDB 于 2023 年 9 月获得了增量导出选项。请参阅 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=1693569600,ExportToTime=1693656000,ExportViewType=NEW_AND_OLD_IMAGES \
--export-type INCREMENTAL_EXPORT