

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

# 在 QLDB 中使用流进行开发
<a name="streams.sdk"></a>

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

本节总结了您可以与 AWS 软件开发工具包一起使用的 API 操作，或者在 Amazon QLDB 中创建和管理日记流。 AWS CLI 它还描述了演示这些操作并使用 Kinesis 客户端库（KCL）或 AWS Lambda 实现流使用者的示例应用程序。

可以使用 KCL 为 Amazon Kinesis Data Streams 构建用户应用程序。KCL 提供低级 Kinesis Data Streams API 之上的有用抽象来简化编码。要了解有关 KCL 的详细信息，请参阅 *Amazon Kinesis Data Streams 开发人员指南*的[使用 Kinesis 客户端库](https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html)。

**Contents**
+ [QLDB 日记流 APIs](#streams.sdk.api)
+ [示例应用程序](#streams.sdk.samples)
  + [基本操作（Java）](#streams.sdk.samples.basic)
  + [与 OpenSearch 服务集成 (Python)](#streams.sdk.samples.elastic)
  + [与 Amazon SNS 和 Amazon SNS 和 Amazon SSS（Python）集成](#streams.sdk.samples.sns)

## QLDB 日记流 APIs
<a name="streams.sdk.api"></a>

QLDB API 提供以下日记账流操作以供应用程序使用：
+ `StreamJournalToKinesis`— 为给定的 QLDB 分类账创建日记账流。流捕获提交到分类账的日记账的每个文档修订，并将数据传送到指定的 Amazon Kinesis Data Streams 资源。
  + **默认情况下，Kinesis Data Streams 中的*记录聚合*处于启用状态。**此选项使 QLDB 能够在单个 Kinesis 数据流记录中发布多个数据记录，从而增加每个 API 调用发送的记录数量。

    记录聚合对记录处理具有重要影响，并且**需要在流使用者**中取消聚合。要了解更多信息，请参阅 *《Amazon Kinesis Data Streams 开发人员指南》* 中的 [KPL 主要概念](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-concepts.html#kinesis-kpl-concepts-aggretation)以及[使用者取消聚合](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-consumer-deaggregation.html)。
+ `DescribeJournalKinesisStream` — 返回有关给定 QLDB 日记账流的详细信息。输出包括 ARN、流名称、当前状态、创建时间和原始流创建请求的参数。
+ `ListJournalKinesisStreamsForLedger`— 返回给定分类账的所有 QLDB 日记账流描述符的列表。每个流描述符的输出都包含返回的`DescribeJournalKinesisStream`相同细节。
+ `CancelJournalKinesisStream`— 结束给定的 QLDB 日记账流。在取消流式传输前，当前状态必须为`ACTIVE`。

  停止历程后，您无法重新启动历程。要恢复向 Kinesis Data Streams 传输数据，您可以创建一个新的 QLDB 流。

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

有关使用创建和管理日记流的信息 AWS CLI，请参阅《[AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html)》。

## 示例应用程序
<a name="streams.sdk.samples"></a>

QLDB 提供了演示使用日记账流进行各种操作的示例应用程序。这些应用程序在[AWS 示例 GitHub 网站上](https://github.com/aws-samples/?q=qldb)是开源的。

**Topics**
+ [基本操作（Java）](#streams.sdk.samples.basic)
+ [与 OpenSearch 服务集成 (Python)](#streams.sdk.samples.elastic)
+ [与 Amazon SNS 和 Amazon SNS 和 Amazon SSS（Python）集成](#streams.sdk.samples.sns)

### 基本操作（Java）
<a name="streams.sdk.samples.basic"></a>

[有关演示 QLDB 日记流基本操作的 Java 代码示例，请参阅 GitHub 存储库 aws-samples/-java。amazon-qldb-dmv-sample](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/tree/master/src/main/java/software/amazon/qldb/tutorial/streams)有关如何下载和安装此示例应用程序的说明，请参阅 [安装 Amazon QLDB Java 示例应用程序](sample-app.java.md)。

**注意**  
安装应用程序后，不要继续执行 Java 教程的*步骤 1* 来创建分类账。此流媒体示例应用程序将为您创建 `vehicle-registration`分 类账。

此示例应用程序打包了来自 [Java 教程](getting-started.java.tutorial.md) 及其依赖项的完整源代码，包括以下模块：
+ [适用于 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java)— 创建和删除 QLDB 和 Kinesis Data Streams 资源，包括分类账、QLDB 日记账流和 Kinesis 数据流。
+ [适用于 Java 的 Amazon QLDB 驱动程序](getting-started.java.md)— 使用 PartiQL 语句在分类账上运行数据事务，包括创建表和插入文档。
+ [Kinesis 客户端库](https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html)：使用和处理 Kinesis 数据流中的数据。

**运行代码**

该[StreamJournal](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/blob/master/src/main/java/software/amazon/qldb/tutorial/streams/StreamJournal.java)类包含演示以下操作的教程代码：

1. 创建名为的分类账`vehicle-registration`，创建表，然后在其中加载示例数据。
**注意**  
在运行此代码之前，请确保您还没有名为 `vehicle-registration` 的活动分类账。

1. 创建 Kinesis 数据流、一个允许 QLDB 担任 Kinesis 数据流写入权限的 IAM 角色和 QLDB 日记账流。

1. 使用 KCL 启动流读取器，该读取器处理 Kinesis 数据流并记录每条 QLDB 数据记录。

1. 使用流数据来验证 `vehicle-registration` 示例分类账的哈希链。

1. 通过停止流读取器、取消 QLDB 日记账流、删除分类账和删除 Kinesis 数据流来清理所有资源。

要运行`StreamJournal`教程代码，请从项目根目录中输入以下 Gradle 命令。

```
./gradlew run -Dtutorial=streams.StreamJournal
```

### 与 OpenSearch 服务集成 (Python)
<a name="streams.sdk.samples.elastic"></a>

[有关演示如何将 QLDB 流与 OpenSearch 亚马逊服务集成的 Python 示例应用程序，请参阅 GitHub 存储库 aws-samples/-。amazon-qldb-streaming-amazon opensearch-service-sample-python](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python)此应用程序使用 AWS Lambda 函数来实现 Kinesis Data Streams 使用者。

在命令行输入以下 `git` 命令以克隆存储库。

```
git clone https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python.git
```

要运行示例应用程序，请参阅上的[自述文件](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python/blob/master/README.md) GitHub 以获取说明。

### 与 Amazon SNS 和 Amazon SNS 和 Amazon SSS（Python）集成
<a name="streams.sdk.samples.sns"></a>

[有关演示如何将 QLDB 流与亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 集成的 Python 示例应用程序，请参阅存储库 aws-samples/-。 GitHub amazon-qldb-streams-dmv sample-lambda-python](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python)

此应用程序使用 AWS Lambda 函数来实现 Kinesis Data Streams 使用者。它向 Amazon SNS 主题发送消息，该主题已订阅 Amazon Simple Queue Service（Amazon SQS）队列。

在命令行输入以下 `git` 命令以克隆存储库。

```
git clone https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python.git
```

要运行示例应用程序，请参阅上的[自述文件](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python/blob/master/README.md) GitHub 以获取说明。