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

DynamoDB 表导出输出格式

除了包含您的表数据的文件,DynamoDB 表导出还包含两个清单文件。这些文件都保存在导出请求指定的 Amazon S3 存储桶中。以下章节介绍每个输出对象的格式和内容。

设置权限

DynamoDB 导出操作使用由凭证建立的服务角色。有关设置用于导出操作的凭证的更多信息,请参阅在 DynamoDB 中请求表导出

注意

要通过 DynamoDB 控制台导出到跨账户 Amazon S3 存储桶,DynamoDB 必须具有该存储桶的 s3:ListBucket 权限。DynamoDB 控制台会先检查这些权限,然后才允许导出操作开始。

清单文件

DynamoDB 在每个导出请求的指定 S3 存储桶中创建两个清单文件及其校验和文件。

export-prefix/AWSDynamoDB/ExportId/manifest-summary.json export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum export-prefix/AWSDynamoDB/ExportId/manifest-files.json export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum

请求表导出时可以选择 export-prefix。这样有助于保持目标 S3 存储桶中的文件有组织。ExportId 是确保到同一个 S3 存储桶和 export-prefix 的多个导出不互相覆盖的唯一令牌。

注意

DynamoDB 还在清单文件的目录中创建一个名为 _started 的空文件。此文件验证目标存储桶是否可写入,以及导出是否已开始。可以安全删除。

汇总清单

manifest-summary.json 文件包含导出任务的汇总信息。格式如下所示:

{ "version": "2020-06-30", "exportArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4", "startTime": "2020-11-04T07:28:34.028Z", "endTime": "2020-11-04T07:33:43.897Z", "tableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog", "tableId": "12345a12-abcd-123a-ab12-1234abc12345", "exportTime": "2020-11-04T07:28:34.028Z", "s3Bucket": "ddb-productcatalog-export", "s3Prefix": "2020-Nov", "s3SseAlgorithm": "AES256", "s3SseKmsKeyId": null, "manifestFilesS3Key": "AWSDynamoDB/01345678901234-abc12345/manifest-files.json", "billedSizeBytes": 0, "itemCount": 8, "outputFormat": "DYNAMODB_JSON" }

文件清单

manifest-files.json 文件包含其中包含已导出表数据的文件的信息。文件采用 JSON Lines 格式,这意味着换行符用作项目分隔符。为了提高可读性,在下面的示例中,文件清单的一个数据文件的详细信息显示在多行。

{ "itemCount": 8, "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==", "etag": "af83d6f217c19b8b0fff8023d8ca4716-1", "dataFileS3Key": "AWSDynamoDB/11111111111111-22222222/data/33334444EXAMPLE.json.gz" }

数据对象

DynamoDB 可以采用两种格式导出表数据:DynamoDB JSON 和 Amazon Ion。无论选择何种格式,数据都将写入多个压缩文件,文件以 manifest-files.json 文件的键命名。

export-prefix/AWSDynamoDB/ExportId/data/bafybeiczss3yxay3o4abnabbb.json.gz export-prefix/AWSDynamoDB/ExportId/data/gkes5o3lnrhoznhnkyax3hxvya.json.gz

DynamoDB JSON

DynamoDB JSON 格式的表导出包含多个 Item 对象。每个单独对象采用 DynamoDB 的标准编组 JSON 格式。

为 DynamoDB JSON 导出数据创建自定义解析器时,请记住,格式为 JSON Lines。这意味着换行符用作项目分隔符。多 Amazon 服务,如 Athena 和 Amazon Glue,将自动解析此格式。

在下面的示例中,为了提高可读性,DynamoDB JSON 导出的单个项目显示为多行。

{ "Item":{ "Authors":{ "SS":[ "Author1", "Author2" ] }, "Dimensions":{ "S":"8.5 x 11.0 x 1.5" }, "ISBN":{ "S":"333-3333333333" }, "Id":{ "N":"103" }, "InPublication":{ "BOOL":false }, "PageCount":{ "N":"600" }, "Price":{ "N":"2000" }, "ProductCategory":{ "S":"Book" }, "Title":{ "S":"Book 103 Title" } } }

Amazon Ion

Amazon Ion 是一种类型丰富、自我描述的分层数据序列化格式,旨在解决设计面向服务的大型体系时每天面临的快速开发、解耦和效率挑战。DynamoDB 支持以 Ion 的文本格式(JSON 的父集)导出表数据。

将表导出为 Ion 格式时,表中使用的 DynamoDB 数据类型将映射到 Ion 数据类型。DynamoDB 集使用 Ion 类型注释消除源表使用的数据类型歧义。

DynamoDB 到 Ion 数据类型转换
DynamoDB 数据类型 Ion 表示
String (S) 字符串
Boolean (BOOL) 布尔
Number (N) 十进制
Binary (B) blob
Set (SS, NS, BS) 列表(包含类型注释 $dynamodb_SS、$dynamodb_NS 或 $dynamodb_BS)
列表 列表
Map struct

Ion 导出中的项目由换行符分隔。每行以 Ion 版本标记开头,后跟一个 Ion 格式的项目。在下面示例中,为了提高可读性,Ion 导出的单个项目显示为多行。

$ion_1_0 { Item:{ Authors:$dynamodb_SS::["Author1","Author2"], Dimensions:"8.5 x 11.0 x 1.5", ISBN:"333-3333333333", Id:103., InPublication:false, PageCount:6d2, Price:2d3, ProductCategory:"Book", Title:"Book 103 Title" } }