在 DynamoDB 中请求表导出 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 DynamoDB 中请求表导出

DynamoDB 表导出允许您将表数据导出到 Amazon S3 存储桶,从而允许您使用其他 AWS 服务(如 Athena、AWS Glue 和 Lake Formation)对数据执行分析和复杂查询。您可以使用 AWS 管理控制台、AWS CLI 或 DynamoDB API 请求表导出。

注意

DynamoDB 表导出仅在新的 AWS 管理控制台 视图中可用。如果您尚未使用新控制台,请在导航边栏中查找“Try the new console”(尝试新控制台) 链接。


                新控制台版本的链接位于导航侧边栏的底部。

如果要使用 AWS CLI,您必须先配置它。有关更多信息,请参阅访问 DynamoDB

Amazon S3 设置和权限

您可以将表数据导出到您有权写入的任何 Amazon S3 存储桶。目标存储桶不需要位于同一区域中,也不必具有与源表相同的所有者。您的 AWS Identity and Access Management (IAM) 策略应允许 s3:AbortMultipartUploads3:PutObject 操作,如以下示例所示。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

在导出过程中撤消这些权限将导致部分文件。

使用 AWS 管理控制台请求导出

以下示例演示如何使用 DynamoDB 控制台导出名为 MusicCollection 的现有表。

注意

此过程假定您已启用时间点恢复。要为 MusicCollection 表启用它,请在表的 Overview (概述) 选项卡上的 Table details (表详细信息) 部分中,为 Point-in-time recovery (时间点恢复) 选择 Enable (启用)

请求表导出

  1. 登录 AWS 管理控制台并通过以下网址打开 DynamoDB 控制台:https://console.amazonaws.cn/dynamodb/

  2. 在控制台左侧的导航窗格中,选择 Streams and exports (流和导出)

  3. Exports (导出) 选项卡上,选择 Export to S3.

  4. 选择源表和目标 S3 存储桶。如果目标存储桶由您的账户拥有,您可以使用 Browse S3 按钮来查找它。否则,请使用 s3://bucketname/prefix format. 输入存储桶的 URL。prefix 是一个可选文件夹,可帮助保持您的 destination 存储桶井然。

  5. 默认情况下,表将以 DynamoDB JSON 格式从时间点恢复时段中的最新可还原时间导出,并使用 Amazon S3 密钥 (SSE-S3) 进行加密。如果要更改这些设置,请展开页面的 Additional settings (其他设置) 部分,然后输入所需的导出设置。

    注意

    如果您选择使用受 AWS Key Management Service (AWS KMS) 保护的密钥加密导出,则密钥必须与目标 S3 存储桶位于同一区域。

  6. 单击 Export 按钮以开始导出。

获取有关 AWS 管理控制台 中过去的导出的详细信息

您可以在导航侧栏中单击 Streams and exports (流和导出),然后选择 Exports (导出) 选项卡,找到有关您过去运行的导出任务的信息。此选项卡包含您在过去 90 天内创建的所有导出的列表。选择 Exports (导出) 选项卡中列出的任务的 ARN 将会检索有关该导出的信息,包括您选择的任何高级配置设置。请注意,尽管导出任务元数据将在 90 天后过期,并且在此列表中不再找到的作业之前,但 S3 存储桶中的对象将保留为存储桶策略允许的时间。DynamoDB 在导出期间永远不会删除它在 S3 存储桶中创建的任何对象。

使用 AWS CLI请求导出

以下示例说明如何使用 AWS CLI 将名为 MusicCollection 的现有表导出到名为 ddb-export-musiccollection 的 S3 存储桶。

注意

此过程假定您已启用时间点恢复。要为 MusicCollection 表启用它,请运行以下命令。

aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True

以下命令将 MusicCollection 导出到一个名为 ddb-export-musiccollection 的 S3 存储桶,其前缀为 2020-Nov。 表数据将以 DynamoDB JSON 格式从时间点恢复时段内的特定时间导出,并使用 Amazon S3 密钥 (SSE-S3) 进行加密。

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --s3-bucket ddb-export-musiccollection \ --s3-prefix 2020-Nov \ --export-format DYNAMODB_JSON \ --export-time 1604632434 \ --s3-sse-algorithm AES256
注意

如果您选择使用受 AWS Key Management Service (AWS KMS) 保护的密钥加密导出,则密钥必须与目标 S3 存储桶位于同一区域。

获取有关 AWS CLI 中过去的导出的详细信息

您可以使用 list-exports 命令查找有关您过去运行的导出任务的信息。此命令会返回您在过去 90 天内创建的所有导出的列表。请注意,尽管导出任务元数据将在 90 天后过期,并且作业时间超过 list-exports 命令不再返回的作业,但 S3 存储桶中的对象将保持其存储桶策略允许的时间。在导出期间,DynamoDB 绝不会删除它在 S3 存储桶中创建的任何对象。

在以下示例中,我们使用可选 table-arn 参数仅列出特定表的导出。

aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog

要检索有关特定导出任务的详细信息(包括任何高级配置设置),请使用 describe-export 命令。

aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4