

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

# 请求在 QLDB 中导出日记账
<a name="export-journal.request"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

Amazon QLDB 提供了一个 API，用于请求导出指定日期和时间范围以及指定的 Amazon S3 存储桶目标的日记账区块。日记账导出作业可以以 [Amazon Ion](ion.md) 格式的文本或二进制形式或 [JSON 行](https://jsonlines.org/)文本格式写入数据对象。您可以使用 AWS 管理控制台、S AWS DK 或 AWS Command Line Interface (AWS CLI) 来创建导出任务。

**Topics**
+ [AWS 管理控制台](#export-journal.request.con)
+ [QLDB API](#export-journal.request.api)
+ [导出作业到期](#export-journal.request.expiration)

## AWS 管理控制台
<a name="export-journal.request.con"></a>

请按照以下步骤使用 QLDB 控制台在 QLDB 中提交日记账导出请求。

**请求导出（控制台）**

1. [登录并打开亚马逊 QLDB 控制台，网址为 /qldb。 AWS 管理控制台 https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. 在导航窗格中，选择 **导出**。

1. 选择 **创建导出作业**。

1. 在**创建导出作业**页面上，输入以下导出设置：
   + **分类账** - 要导出其日记账区块的分类帐。
   + **开始日期和时间** - 要导出的日记账数据块范围的起始时间戳（协调世界时（UTC））。此时间戳必须早于**结束日期和时间**。如果您提供的开始时间戳早于分类账的 `CreationDateTime`，QLDB 会将其默认为分类账的 `CreationDateTime`。
   + **结束日期和时间** - 要导出的日记账区块范围的独占结束时间戳（UTC）。此日期和时间不能是未来的时间。
   + **日记账区块的目标** — 您的导出作业写入数据对象的 Amazon S3 存储桶和前缀名称。使用以下 Amazon S3 URI 格式。

     ```
     s3://amzn-s3-demo-qldb-cloudtrail/prefix/
     ```

     您必须为输出对象指定 S3 存储桶名称和可选的前缀名称。以下是示例。

     ```
     s3://amzn-s3-demo-qldb-cloudtrail/journalExport/
     ```

     存储桶名称和前缀都必须符合 Amazon S3 命名规则和惯例。有关命名存储桶更多信息，请参阅 *Amazon Simple Storage Service 开发人员指南*中的[存储桶限制和约束](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)。有关更多信息，请参阅[对象键和元数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html)。
**注意**  
不支持跨区域查询。指定的 Amazon S3 存储桶必须与您的账本 AWS 区域 相同。
   + **S3 加**密 - 您的导出作业在 Amazon S3 存储桶中写入数据时使用的加密设置。有关在 Amazon S3 中使用服务器端加密选项的信息，请参阅 *Amazon S3 开发人员指南* 中的[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。
     + **存储桶默认加密** - 使用指定 Amazon S3 存储桶的默认加密设置。
     + **AES-256** ‐ 具有 Amazon S3 托管密钥的服务器端加密（SSE-S3）。
     + **AWS-KMS** — 使用带有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS)。

       如果您选择此类型，并选择**选择不同的 AWS KMS key**某个选项，则您还必须在以下 Amazon资源名称（ARN）格式中指定对称加密的 KMS 密钥。

       ```
       arn:aws:kms:aws-region:account-id:key/key-id
       ```
   + **服务访问权限**：在您的 Amazon S3 存储桶中授予 QLDB 写入权限的 IAM 角色。如果适用，IAM 角色还必须授予 QLDB 使用您的 KMS 密钥的权限。

     要在请求日记账导出时将角色传递给 QLDB，您必须具有对 IAM 角色资源执行 `iam:PassRole` 操作的权限。
     + **创建和使用新的服务角色** — 让控制台为您创建一个具有指定 Amazon S3 存储桶所需权限的新角色。
     + **使用现有的服务角色**-要了解如何在 IAM 中手动创建此角色，请参阅[导出权限](export-journal.perms.md)。
   + **输出格式** - 导出的日记账数据的输出格式
     + **Ion 文本** -（默认）Amazon Ion 的文本表示形式
     + **Ion 二进制** — Amazon Ion 的二进制表示
     + **JSON** - 以换行符分隔的 JSON 文本格式

       如果您选择 JSON，QLDB 会在导出的数据对象中将 Ion 日记账数据向下转换为 JSON。有关更多信息，请参阅[向下转换至 JSON](export-journal.output.md#export-journal.output.json)。

1. 根据需要进行设置后，选择 **创建导出作业**。

   完成导出作业所需的时间取决于数据大小。如果您的请求提交成功，控制台将返回主**导出**页面，并列出您的导出作业及其当前状态。

1. 您可以在 Amazon S3 控制台上查看导出对象。

   打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

   要了解有关这些输出对象格式的更多信息，请参阅 [QLDB 中的日记账导出输出](export-journal.output.md)。

**注意**  
导出作业将在完成七天后过期。有关更多信息，请参阅[导出作业到期](#export-journal.request.expiration)。

## QLDB API
<a name="export-journal.request.api"></a>

您也可以使用带软件开发工具包的 Amazon QLDB API 或者，请求日记导出。 AWS AWS CLI QLDB API 提供以下操作以供应用程序使用：
+ `ExportJournalToS3`— 将日期和时间范围内的日记账内容从给定分类账导出到指定的 Amazon S3 存储桶。导出作业可以 Amazon Ion 格式的文本或二进制形式或 JSON 行文本格式写入数据对象。
+ `DescribeJournalS3Export`— 返回有关日记账导出作业的详细信息。输出包括其当前状态、创建时间和原始导出请求的参数。
+ `ListJournalS3Exports`— 返回与当前 AWS 账户 和地区相关联的所有账本的日记账导出作业描述的列表。每个导出作业描述的输出都包含与​​ `DescribeJournalS3Export` 返回的相同的详细信息。
+ `ListJournalS3ExportsForLedger`— 返回给定分类账的日记账导出作业描述列表。每个导出作业描述的输出都包含与​​ `DescribeJournalS3Export` 返回的相同的详细信息。

有关这些 API 操作的完整介绍，请参阅 [Amazon QLDB API 参考](api-reference.md)。

有关使用导出日记账数据的信息 AWS CLI，请参阅[AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html)。

### Java 中的示例应用程序
<a name="export-journal.request.api.sample"></a>

有关基本导出操作的 Java 代码示例，请参阅 GitHub 存储库 a [ws-samples/-amazon-qldb-dmv-sample](https://github.com/aws-samples/amazon-qldb-dmv-sample-java) java。有关如何下载和安装此示例应用程序的说明，请参阅 [安装 Amazon QLDB Java 示例应用程序](sample-app.java.md)。在请求导出之前，请确保按照 [Java 教程](getting-started.java.tutorial.md) 中的步骤 1-3 创建一个示例分类帐并用示例数据加载它。

以下类中的教程代码提供了创建导出、检查导出状态和处理导出输出的示例。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/qldb/latest/developerguide/export-journal.request.html)

## 导出作业到期
<a name="export-journal.request.expiration"></a>

已完成的日记账导出作业有 7 天的保留期。此限制到期后，它们会自动被硬删除。此到期时间是一项硬性限制，无法更改。

在删除已完成的导出作业后，您将无法再使用 QLDB 控制台或以下 API 操作来检索有关该任务的元数据：
+ `DescribeJournalS3Export`
+ `ListJournalS3Exports`
+ `ListJournalS3ExportsForLedger`

但是，此过期时间对导出数据本身没有影响。所有元数据都保留在导出文件中写入的清单文件中。此过期时间旨在提供更顺畅的API操作体验，以列出日记账导出作业。QLDB 会移除旧的导出作业，确保您只看到最近的导出，而不必解析多页作业。