

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 QLDB 中使用串流進行開發
<a name="streams.sdk"></a>

**重要**  
終止支援通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 終止支援為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

本節摘要說明您可以搭配 AWS SDK 或 使用的 API 操作 AWS CLI ，以在 Amazon QLDB 中建立和管理日誌串流。它還描述了示範這些操作並使用 Kinesis Client Library (KCL) 或 AWS Lambda 實作串流消費者的範例應用程式。

您可以使用 KCL 來建置 Amazon Kinesis Data Streams 的取用者應用程式。KCL 會在低階 Kinesis Data Streams API 上提供有用的抽象，可以簡化程式碼。若要進一步了解 KCL，請參閱《*Amazon Kinesis * [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 Service (Python) 整合
](#streams.sdk.samples.elastic)
  + [

### 與 Amazon SNS 和 Amazon SQS (Python) 整合
](#streams.sdk.samples.sns)

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

QLDB API 提供下列日誌串流操作，以供應用程式使用：
+ `StreamJournalToKinesis` – 為指定的 QLDB 總帳建立日誌串流。串流會擷取遞交至總帳日誌的每個文件修訂，並將資料交付至指定的 Kinesis Data Streams 資源。
  + **Kinesis Data Streams 中的*記錄彙總*預設為啟用。**此選項可讓 QLDB 在單一 Kinesis Data Streams 記錄中發佈多個資料記錄，增加每個 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 Service (Python) 整合
](#streams.sdk.samples.elastic)
+ [

### 與 Amazon SNS 和 Amazon SQS (Python) 整合
](#streams.sdk.samples.sns)

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

如需示範 QLDB 日誌串流基本操作的 Java 程式碼範例，請參閱 GitHub 儲存庫 [aws-samples/amazon-qldb-dmv-sample-java](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 Client Library](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 資料串流，此 IAM 角色可讓 QLDB 取得 Kinesis 資料串流的寫入許可，以及 QLDB 日誌串流。

1. 使用 KCL 啟動串流讀取器，以處理 Kinesis 資料串流並記錄每個 QLDB 資料記錄。

1. 使用串流資料來驗證`vehicle-registration`範例總帳的雜湊鏈。

1. 停止串流讀取器、取消 QLDB 日誌串流、刪除總帳，以及刪除 Kinesis 資料串流，以清除所有資源。

若要執行`StreamJournal`教學課程程式碼，請從專案根目錄輸入下列 Gradle 命令。

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

### 與 OpenSearch Service (Python) 整合
<a name="streams.sdk.samples.elastic"></a>

如需示範如何將 QLDB 串流與 Amazon OpenSearch Service 整合的 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
```

若要執行範例應用程式，請參閱 GitHub 上的 [README](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python/blob/master/README.md) 以取得說明。

### 與 Amazon SNS 和 Amazon SQS (Python) 整合
<a name="streams.sdk.samples.sns"></a>

如需示範如何將 QLDB 串流與 Amazon Simple Notification Service (Amazon SNS) 整合的 Python 範例應用程式，請參閱 GitHub 儲存庫 [aws-samples/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
```

若要執行範例應用程式，請參閱 GitHub 上的 [README](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python/blob/master/README.md) 以取得說明。