如何将 DynamoDB 表备份到 Amazon S3?

2 分钟阅读
0

我想使用 Amazon Simple Storage Service (Amazon S3) 备份我的 Amazon DynamoDB 表。

概述

DynamoDB 提供了两种内置备份方法:

这两种方法都适用于出于灾难恢复目的而备份表的情况。但是,使用这些方法时,不能将数据用于涉及数据分析或提取、转换和加载 (ETL) 作业的用例。DynamoDB 导出到 Amazon S3 功能是创建备份的最简单方法,您可以将下载到本地或与其他 AWS 服务一起使用。要自定义创建备份的过程,您可以使用 Amazon EMR 或 AWS Glue。

解决方法

“DynamoDB 导出到 Amazon S3”功能

使用此功能,您可以在时间点恢复窗口期内随时将数据从 Amazon DynamoDB 表导出到 Amazon S3 存储桶。有关详细信息,请参阅 DynamoDB 数据导出到 Amazon S3

有关如何使用此功能的示例,请参阅在不编码的情况下将 Amazon DynamoDB 表数据导出到 Amazon S3 中的数据湖

使用导出至 Amazon S3 功能,即可以其他方式使用数据,包括:

  • 在 Amazon S3 上对导出的数据执行 ETL,然后将数据导回 DynamoDB
  • 保留历史快照以供审计
  • 将数据与其他服务或应用程序集成
  • 根据 DynamoDB 数据构建 S3 数据湖,然后分析来自各种服务的数据,例如 Amazon Athena、Amazon Redshift 或 Amazon SageMaker
  • 根据需要对来自 Athena 或 Amazon EMR 的数据进行查询,而不会影响您的 DynamoDB 容量

使用此功能时,请注意以下优缺点:

  • **优点:**此功能允许您在 AWS 区域和账户之间导出数据,而无需构建自定义应用程序或编写代码。导出不会影响生产表的读取容量或可用性。
  • **缺点:**此功能仅以 DynamoDB JSON 或 Amazon Ion 格式导出表格数据。要使用 Amazon S3 存储桶在本地重新导入数据,请参阅从 Amazon S3 导入 DynamoDB 数据。您也可以创建新模板或使用 AWS Glue、Amazon EMR 或 AWS 开发工具包重新导入数据。

Amazon EMR

使用 Amazon EMR 将您的数据导出到 Amazon S3 存储桶。利用以下两种方法均可完成此操作:

  • 使用 DynamoDBStorageHandler 对 DynamoDB 表运行 Hive/Spark 查询。有关更多信息,请参阅从 DynamoDB 导出数据
  • 使用 GitHub 上的开源 emr-dynamodb-tool 工具导出/导入 DynamoDB 表。

使用这些方法时,请注意以下优缺点:

  • 优点:如果您是 Amazon EMR 的活跃用户并且熟悉 Hive 或 Spark,那么与使用原生的导出到 Amazon S3 功能相比,使用这些方法可以更好地管理配置。您也可以使用现有集群来实现此目的。
  • **缺点:**使用这些方法时,必须创建并维护 EMR 集群。如果要使用 DynamoDBStorageHandler,则必须熟悉 Hive 或 Spark。

AWS Glue

使用 AWS Glue 将您的表复制到 Amazon S3。有关更多信息,请参阅使用 AWS Glue 和 Amazon DynamoDB 导出

  • **优点:**AWS Glue 是一项无服务器服务,不需要创建和维护资源。您可以直接回写到 DynamoDB。在导出数据时,您可以为过滤和转换等用例添加自定义 ETL 逻辑。您也可以从 CSV、JSON、Parquet 或 ORC 中选择自己的首选格式。有关更多信息,请参阅 AWS Glue 中的输入和输出的数据格式选项
  • **缺点:**要选择此选项,必须了解如何使用 Spark。另外,您还需要维护 AWS Glue ETL 任务的源代码。有关更多信息,请参阅 "connectionType": "dynamodb"

如果您认为这些选项都不够灵活,可以使用 DynamoDB API 自行创建解决方案。

相关信息

在 DynamoDB 中请求导出表

如何使用 AWS Step Functions 和 AWS Glue 将 Amazon DynamoDB 表导出到 Amazon S3

AWS 官方
AWS 官方已更新 8 个月前