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

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

中的表导出输出DynamoDB

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

清单文件

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 存储桶中的文件保持有序状态。是唯一令牌,用于确保多个导出到同一 S3 存储桶并且 ExportId 不会相互覆盖。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 行格式,这意味着换行符用作项目分隔符。在以下示例中,为了便于阅读,文件清单中一个数据文件的详细信息将分多行进行格式化。

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

数据对象

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

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

DynamoDB JSON

JSON 格式的表导出包含多个 DynamoDB 对象。Item每个单独的对象均为 DynamoDB 的标准封送 JSON 格式。

为 DynamoDB JSON 导出数据创建自定义解析器时,请记住格式为 JSON 行。这意味着换行符用作项目分隔符。许多 AWS 服务(如 Athena 和 AWS 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 datatypes。DynamoDB 集使用 Ion type annotations 区分源表中使用的数据类型。

DynamoDB 到 Ion 数据类型转换
DynamoDB 数据类型 Ion 表示形式
字符串 string
布尔值 (BOOL) bool
数字 (N) decimal
二进制 (B) blob
设置 (SS、NS、BS) 列表(包含类型注释 $dynamodb_SS、$dynamodb_NS 或 $dynamodb_BS)
List list
映射 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" } }