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

在 DynamoDB 中请求表导出

DynamoDB 表导出允许将表数据导出到 Amazon S3 存储桶,可以使用其他 Amazon 服务如 Athena、Amazon Glue 和 Lake Formation,对数据进行分析和复杂查询。可以使用 Amazon Web Services Management Console、Amazon CLI 或 DynamoDB API 请求表导出。

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

Amazon S3 设置和权限

可以将表数据导出到具有写入权限的任何 Amazon S3 存储桶。目标存储桶无需与源表位于同一区域或拥有同一所有者。除了 dynamodb:ExportTableToPointInTime 权限,Amazon Identity and Access Management (IAM) 策略还应允许 s3:AbortMultipartUploads3:PutObjects3:PutObjectAcl 操作,如下面的示例所示。

注意

要通过 DynamoDB Amazon Web Services Management Console导出到跨账户 Amazon S3 存储桶,DynamoDB 需要具有该存储桶的 s3:ListBucket 权限。DynamoDB Amazon Web Services Management Console会先检查这些权限,然后再允许开始导出。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }

下面的代码是示例 S3 存储桶策略(在目标账户中)。

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

导出时撤消这些权限将导致部分文件。

使用 Amazon Web Services Management Console 请求导出

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

注意

此过程假定已启用时间点恢复。要在 MusicCollection 表中启用,在表的概述选项卡的表详细信息部分,为时间点恢复选择启用

请求表导出

  1. 登录 Amazon Web Services Management Console,打开 DynamoDB 控制台:https://console.aws.amazon.com/dynamodb/

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

  3. 选择导出到 S3

  4. 选择源表和目标 S3 存储桶。如果目标存储桶是您的账户所有的,可以使用浏览 S3 按钮查找。否则,使用 s3://bucketname/prefix format. 输入存储桶 URL,prefix 是帮助保持目标存储桶井然有序的可选文件夹。

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

    注意

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

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

获取 Amazon Web Services Management Console 中以前导出的详细信息

单击导航侧边栏的流和导出,然后选择导出选项卡,查找过去运行的导出任务的信息。此选项卡包含过去 90 天内创建的所有导出的列表。选择“导出”选项卡中列出任务的 ARN 将检索该导出的信息,包括您选择的任何高级配置设置。请注意,尽管导出任务元数据会在 90 天后过期,列表中没有早于该日期的作业,但 S3 存储桶中的数据元将保持存储桶策略允许的时间。导出时,DynamoDB 不删除 S3 存储桶中创建的任何对象。

请求使用 Amazon CLI 导出

下面的示例演示如何使用 Amazon CLI 将现有表 MusicCollection 导出到 S3 存储桶 ddb-export-musiccollection

注意

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

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

下面的命令将 MusicCollection 导出具有前缀 2020-Nov 的 S3 存储桶 ddb-export-musiccollection。表数据将从时间点恢复窗口的特定时间以 DynamoDB JSON 格式导出,并使用 Amazon S3 key (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
注意

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

获取 Amazon 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