

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

# 在 QLDB 中建立和管理串流
<a name="streams.create"></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/)。

Amazon QLDB 提供 API 操作，以建立和管理從總帳到 Amazon Kinesis Data Streams 的日誌資料串流。QLDB 串流會擷取遞交至日誌的每個文件修訂，並將其傳送至 Kinesis 資料串流。

您可以使用 AWS 管理主控台、 AWS 開發套件或 AWS Command Line Interface (AWS CLI) 來建立日誌串流。此外，您也可以使用 [AWS CloudFormation](https://aws.amazon.com/cloudformation) 範本來建立串流。如需詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的 [AWS::QLDB::Stream](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html) 資源。

**Topics**
+ [串流參數](#streams.create.params)
+ [串流 ARN](#streams.create.arn)
+ [AWS 管理主控台](#streams.create.con)
+ [串流狀態](#streams.create.states)
+ [處理受損的串流](#streams.create.impaired)

## 串流參數
<a name="streams.create.params"></a>

若要建立 QLDB 日誌串流，您必須提供下列組態參數：

**分類帳名稱**  
您要串流至 Kinesis Data Streams 之日誌資料的 QLDB 總帳。

**串流名稱**  
您要指派給 QLDB 日誌串流的名稱。使用者定義的名稱可協助識別和指示串流用途。  
對於特定分類帳，您的串流名稱在其他*作用中*串流間必須是唯一的。串流名稱的命名限制與分類帳名稱相同，如 中所定義[Amazon QLDB 中的配額和限制](limits.md#limits.naming)。  
除了串流名稱之外，QLDB 還會為您建立的每個 QLDB 串流指派*串流 ID*。串流 ID 在指定總帳的所有串流中都是唯一的，無論其狀態為何。

**開始日期和時間**  
開始串流日誌資料的日期和時間。此值可以是過去的任何日期和時間，但不能是未來的日期和時間。

**結束日期和時間**  
（選用） 指定串流何時結束的日期和時間。  
如果您建立的無限期串流沒有結束時間，則必須手動取消它以結束串流。您也可以取消尚未達到其指定結束日期和時間的作用中、有限串流。

**目的地 Kinesis 資料串流**  
串流寫入資料記錄的目標資源 Kinesis Data Streams。若要了解如何建立 Kinesis 資料串流，請參閱《Amazon Kinesis [Data Streams 開發人員指南》中的建立和更新](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-streams.html)資料串流。 *Amazon Kinesis *  
+ 不支援跨區域和跨帳戶串流。指定的 Kinesis 資料串流必須與總帳位於相同的 AWS 區域 和 帳戶中。
+ **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)。

**IAM 角色**  
允許 QLDB 擔任 Kinesis 資料串流寫入許可的 IAM 角色。您可以使用 QLDB 主控台自動建立此角色，也可以在 IAM 中手動建立角色。若要了解如何手動建立，請參閱 [串流許可](streams.perms.md)。  
若要在請求日誌串流時將角色傳遞至 QLDB，則您必須擁有針對 IAM 角色資源執行 `iam:PassRole` 動作的許可。

## 串流 ARN
<a name="streams.create.arn"></a>

每個 QLDB 日誌串流都是總帳的子資源，並由 Amazon Resource Name (ARN) 唯一識別。以下是名為 之總帳的串流 ID 為 的 QLDB `IiPT4brpZCqCq3f4MTHbYy` 串流 ARN 範例`exampleLedger`。

```
arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy
```

下一節說明如何使用 建立和取消 QLDB 串流 AWS 管理主控台。

## AWS 管理主控台
<a name="streams.create.con"></a>

請依照下列步驟，使用 QLDB 主控台建立或取消 QLDB 串流。

**建立串流 （主控台）**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)：// 開啟 Amazon QLDB 主控台。

1. 在導覽窗格中，選擇 **Data Streams** (資料串流)。

1. 選擇**建立 QLDB 串流**。

1. 在**建立 QLDB 串流**頁面上，輸入下列設定：
   + **串流名稱** – 您要指派給 QLDB 串流的名稱。
   + **分類帳** – 您要串流其日誌資料的分類帳。
   + **開始日期和時間** – 以國際標準時間 (UTC) 為單位的包含時間戳記，從中開始串流日誌資料。此時間戳記預設為目前的日期和時間。它不能是未來的，而且必須早於**結束日期和時間**。
   + **結束日期和時間** – （選用） 指定串流何時結束的專屬時間戳記 (UTC)。如果您將此參數保留空白，串流會無限期執行，直到您將其取消為止。
   + **目的地串流** – 串流寫入資料記錄的目標資源 Kinesis Data Streams。使用下列 ARN 格式。

     ```
     arn:aws:kinesis:aws-region:account-id:stream/kinesis-stream-name
     ```

     以下是範例。

     ```
     arn:aws:kinesis:us-east-1:123456789012:stream/stream-for-qldb
     ```

     不支援跨區域和跨帳戶串流。指定的 Kinesis 資料串流必須與總帳位於相同的 AWS 區域 和 帳戶中。
   + 在 **Kinesis Data Streams 中啟用記錄彙總** – （預設為啟用） 允許 QLDB 在單一 Kinesis Data Streams 記錄中發佈多個資料記錄，從而增加每個 API 呼叫傳送的記錄數。
   + **服務存取** – 將 QLDB 寫入許可授予 Kinesis 資料串流的 IAM 角色。

     *若要在請求日誌串流時將角色傳遞至 QLDB，您必須具有對 IAM 角色資源執行`iam:PassRole`動作的許可。*
     + **建立和使用新的服務角色** – 讓主控台為您建立具有指定 Kinesis 資料串流所需許可的新角色。
     + **使用現有的服務角色** – 若要了解如何在 IAM 中手動建立此角色，請參閱 [串流許可](streams.perms.md)。
   + **標籤** – （選用） 透過將標籤附加為鍵/值對，將中繼資料新增至串流。您可以將標籤新增至串流，以協助組織和識別標籤。如需詳細資訊，請參閱[標記 Amazon QLDB 資源](tagging.md)。

     選擇**新增標籤**，然後視需要輸入任何鍵值對。

1. 設定如您想要，請選擇**建立 QLDB 串流**。

   如果您的請求提交成功，主控台會返回主**串流**頁面，並列出您的 QLDB 串流及其目前狀態。

1. 串流處於作用中狀態後，請使用 Kinesis 透過[取用者應用程式](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html)處理您的串流資料。

   開啟位於 https：//[https://console.aws.amazon.com/kinesis/](https://console.aws.amazon.com/kinesis/) 的 Kinesis Data Streams 主控台。

如需串流資料記錄格式的資訊，請參閱 [Kinesis 中的 QLDB 串流記錄](streams.records.md)。

若要了解如何處理導致錯誤的串流，請參閱 [處理受損的串流](#streams.create.impaired)。

**取消串流 （主控台）**

取消 QLDB 串流後就無法重新啟動。若要繼續將資料交付至 Kinesis Data Streams，您可以建立新的 QLDB 串流。

1. 開啟位於 https：//[https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb) 的 Amazon QLDB 主控台。

1. 在導覽窗格中，選擇 **Data Streams** (資料串流)。

1. 在 QLDB 串流清單中，選取您要取消的作用中串流。

1. 選擇**取消串流**。在提供的**cancel stream**方塊中輸入 以確認這一點。

如需搭配 AWS SDK 或 使用 QLDB API AWS CLI 來建立和管理日誌串流的詳細資訊，請參閱 [在 QLDB 中使用串流進行開發](streams.sdk.md)。

## 串流狀態
<a name="streams.create.states"></a>

QLDB 串流的狀態可以是下列其中一項：
+ `ACTIVE` – 目前正在串流或等待串流資料 （適用於沒有結束時間的無限串流）。
+ `COMPLETED` – 已成功在指定的時間範圍內串流所有日誌區塊。這是一個終端狀態。

  
+ `CANCELED` – 在指定的結束時間之前由使用者請求結束，且不再主動串流資料。這是一個終端狀態。
+ `IMPAIRED` – 因為需要您動作的錯誤而無法將記錄寫入 Kinesis。這是可復原的非終端狀態。

  如果您在一小時內解決錯誤，串流會自動移至 `ACTIVE` 狀態。如果錯誤在一小時後仍未解決，串流會自動移至 `FAILED` 狀態。
+ `FAILED` – 由於錯誤而無法將記錄寫入 Kinesis，且處於無法復原的終端狀態。

下圖說明 QLDB 串流資源如何在狀態之間轉換。

![\[狀態圖顯示 QLDB 串流資源如何在作用中、已取消、已完成、受損和失敗狀態之間轉換。\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/images/stream-states.png)


### 終端機串流過期
<a name="streams.create.states.expiration"></a>

處於終端狀態 (`CANCELED`、 `COMPLETED`和 `FAILED`) 的串流資源有 7 天的保留期。它們會在此限制過期後自動硬刪除。

刪除終端機串流後，您無法再使用 QLDB 主控台或 QLDB API 來描述或列出串流資源。

## 處理受損的串流
<a name="streams.create.impaired"></a>

如果您的串流遇到錯誤，它會先移至 `IMPAIRED` 狀態。QLDB `IMPAIRED` 會持續重試串流長達一小時。

如果您在一小時內解決錯誤，串流會自動移至 `ACTIVE` 狀態。如果錯誤在一小時後仍未解決，串流會自動移至 `FAILED` 狀態。

受損或失敗的串流可能有下列其中一個錯誤原因：
+ `KINESIS_STREAM_NOT_FOUND` – 目的地 Kinesis Data Streams 資源不存在。驗證您在 QLDB 串流請求中提供的 Kinesis 資料串流是否正確。然後，前往 Kinesis 並建立您指定的資料串流。
+ `IAM_PERMISSION_REVOKED` – QLDB 沒有足夠的許可將資料記錄寫入您指定的 Kinesis 資料串流。確認您已為指定的 Kinesis 資料串流定義政策，將 QLDB 服務 (`qldb.amazonaws.com`) 許可授予下列動作：
  + `kinesis:PutRecord`
  + `kinesis:PutRecords`
  + `kinesis:DescribeStream`
  + `kinesis:ListShards`

### 監控受損的串流
<a name="streams.create.impaired.monitor"></a>

如果串流受損，QLDB 主控台會顯示橫幅，顯示串流的詳細資訊及其遇到的錯誤。您也可以使用 `DescribeJournalKinesisStream` API 操作來取得串流的狀態和基礎錯誤原因。

此外，您可以使用 Amazon CloudWatch 建立警示來監控串流的`IsImpaired`指標。如需使用 CloudWatch 監控 QLDB 指標的資訊，請參閱 [Amazon QLDB 維度和指標](monitoring-cloudwatch.md#qldb-metrics-dimensions)。