

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

# 存取 Amazon QLDB
<a name="accessing"></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 管理主控台、 AWS Command Line Interface (AWS CLI) 或 QLDB API 來存取 Amazon QLDB。下列各節說明如何使用這些選項，以及使用這些選項的先決條件。

## 先決條件
<a name="accessing.prereqs"></a>

您必須先設定 AWS 帳戶 ，才能存取 QLDB。

**Topics**
+ [註冊 AWS 帳戶](#sign-up-for-aws)
+ [建立具有管理存取權的使用者](#create-an-admin)
+ [在 IAM 中管理 QLDB 許可](#accessing.prereqs.permissions)
+ [授予程式設計存取權 （選用）](#grant-programmatic-access)

### 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   註冊程序的一部分包括接聽電話或文字訊息，以及在電話鍵盤上輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

### 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center和建立管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)。

### 在 IAM 中管理 QLDB 許可
<a name="accessing.prereqs.permissions"></a>

如需使用 AWS Identity and Access Management (IAM) 管理使用者 QLDB 許可的詳細資訊，請參閱 [Amazon QLDB 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。

### 授予程式設計存取權 （選用）
<a name="grant-programmatic-access"></a>

如果使用者想要與 AWS 外部互動，則需要程式設計存取 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。

若要授與使用者程式設計存取權，請選擇下列其中一個選項。


****  

| 哪個使用者需要程式設計存取權？ | 到 | 根據 | 
| --- | --- | --- | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/accessing.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中[將臨時登入資料與 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)搭配使用的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/accessing.html)  | 

## 如何存取 Amazon QLDB
<a name="accessing.how-to"></a>

完成設定 的先決條件後 AWS 帳戶，請參閱下列主題以進一步了解如何存取 QLDB：
+ [使用主控台](console_QLDB.md)
+ [使用 AWS CLI （僅限管理 API)](Tools.CLI.md)
+ [使用 Amazon QLDB shell （僅限資料 API)](data-shell.md)
+ [使用 API](Using.API.md)

# 使用主控台存取 Amazon QLDB
<a name="console_QLDB"></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/)。

您可以在 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)：// 存取 AWS 管理主控台 適用於 Amazon QLDB 的 。

您可以使用 主控台在 QLDB 中執行下列動作：
+ 建立、刪除、描述和列出總帳。
+ 使用 [PartiQL](ql-reference.md) *編輯器執行 PartiQL *陳述式。
+ 管理 QLDB 資源的標籤。
+ 以密碼編譯方式驗證日誌資料。
+ 匯出或串流日誌區塊。

若要了解如何建立 Amazon QLDB 總帳並使用範例應用程式資料進行設定，請參閱 [Amazon QLDB 主控台入門](getting-started.md)。

## PartiQL 編輯器快速參考
<a name="partiql-editor-reference"></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 支援部分 [PartiQL](https://partiql.org/) 作為其查詢語言，[Amazon Ion](http://amzn.github.io/ion-docs/) 作為其文件導向的資料格式。如需 PartiQL 的 QLDB 實作的完整指南和更多詳細資訊，請參閱 [Amazon QLDB PartiQL 參考](ql-reference.md)。

下列主題提供如何在 QLDB 中使用 PartiQL 的快速參考概觀。

**Topics**
+ [QLDB 中的 PartiQL 快速提示](#partiql-editor-ref-tips)
+ [命令](#partiql-editor-ref-commands)
+ [系統定義的檢視](#partiql-editor-ref-views)
+ [基本語法規則](#partiql-editor-ref-syntax)
+ [PartiQL 編輯器鍵盤快速鍵](#console_QLDB.partiql-editor-shortcuts)

### QLDB 中的 PartiQL 快速提示
<a name="partiql-editor-ref-tips"></a>

以下是在 QLDB 中使用 PartiQL 的秘訣和最佳實務的簡短摘要：
+ **了解並行和交易限制** – 包括`SELECT`查詢在內的所有陳述式都受到[樂觀並行控制 (OCC)](concurrency.md) 衝突和[交易限制](limits.md#limits.fixed)的約束，包括 30 秒的交易逾時。
+ **使用索引** – 使用高基數索引並執行目標查詢，以最佳化您的陳述式並避免完整資料表掃描。如需詳細資訊，請參閱 [最佳化查詢效能](working.optimize.md)。
+ **使用等式述詞** – 索引查詢需要*等式*運算子 (`=` 或 `IN`)。不等式運算子 (`<`、`>`、`LIKE`、`BETWEEN`) 不符合索引查詢的資格，並導致完整資料表掃描。
+ **僅使用內部聯結** – QLDB 僅支援內部聯結。最佳實務是，加入針對您要加入的每個資料表編製索引的欄位。為聯結條件和等式述詞選擇高基數索引。

### 命令
<a name="partiql-editor-ref-commands"></a>

QLDB 支援下列 PartiQL 命令。


**資料定義語言 (DDL)**  

| Command | 描述 | 
| --- | --- | 
| [CREATE INDEX](ql-reference.create-index.md) | 在資料表上建立最上層文件欄位的索引。 | 
| [CREATE TABLE](ql-reference.create-table.md) | 建立資料表。 | 
| [DROP INDEX](ql-reference.drop-index.md) | 從資料表刪除索引。 | 
| [DROP TABLE](ql-reference.drop-table.md) | 停用現有的資料表。 | 
| [UNDROP 資料表](ql-reference.undrop-table.md) | 重新啟用非作用中的資料表。 | 


**資料處理語言 (DML)**  

| Command | 描述 | 
| --- | --- | 
| [DELETE](ql-reference.delete.md) | 透過建立新的文件最終修訂，將作用中文件標記為已刪除。 | 
| [FROM (INSERT、Remove 或 SET)](ql-reference.from.md) | 在語意上與 相同UPDATE。 | 
| [INSERT](ql-reference.insert.md) | 將一或多個[文件](ql-reference.docs.md)新增至資料表。 | 
| [SELECT](ql-reference.select.md) | 從一或多個資料表擷取資料。 | 
| [UPDATE](ql-reference.update.md) | 更新、插入或移除文件中的特定元素。 | 

#### DML 陳述式範例
<a name="partiql-editor-ref-commands-examples"></a>

**INSERT**

```
INSERT INTO VehicleRegistration VALUE
{
    'VIN' : 'KM8SRDHF6EU074761', --string
    'RegNum' : 1722, --integer
    'PendingPenaltyTicketAmount' : 130.75, --decimal
    'Owners' : { --nested struct
        'PrimaryOwner' : { 'PersonId': '294jJ3YUoH1IEEm8GSabOs' },
        'SecondaryOwners' : [ --list of structs
            { 'PersonId' : '1nmeDdLo3AhGswBtyM1eYh' },
            { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' }
        ]
    },
    'ValidToDate' : `2020-06-25T` --Ion timestamp literal with day precision
}
```

**UPDATE-INSERT**

```
UPDATE Vehicle AS v
INSERT INTO v VALUE 26500 AT 'Mileage'
WHERE v.VIN = '1N4AL11D75C109151'
```

**UPDATE-REMOVE**

```
UPDATE Person AS p
REMOVE p.Address
WHERE p.GovId = '111-22-3333'
```

**SELECT – 相關子查詢**

```
SELECT r.VIN, o.SecondaryOwners
FROM VehicleRegistration AS r, @r.Owners AS o
WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

**SELECT – 內部聯結**

```
SELECT v.Make, v.Model, r.Owners
FROM VehicleRegistration AS r INNER JOIN Vehicle AS v
ON r.VIN = v.VIN
WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

**SELECT – 使用 BY 子句取得文件 ID**

```
SELECT r_id FROM VehicleRegistration AS r BY r_id
WHERE r.VIN = '1HVBBAANXWH544237'
```

### 系統定義的檢視
<a name="partiql-editor-ref-views"></a>

QLDB 支援資料表的下列系統定義檢視。


| 檢視 | 描述 | 
| --- | --- | 
| table\$1name | 資料表的預設[使用者檢視](working.userdata.md)，僅包含使用者資料的目前狀態。 | 
| \$1ql\$1committed\$1table\$1name | 資料表的完整系統定義[遞交檢視](working.metadata.md)，其中包含使用者資料和系統產生的中繼資料的目前狀態，例如文件 ID。 | 
| history(table\$1name) | 傳回資料表完整修訂歷史記錄的內建[歷史記錄函數](working.history.md)。 | 

### 基本語法規則
<a name="partiql-editor-ref-syntax"></a>

QLDB 支援 PartiQL 的下列基本語法規則。


| 字元 | 描述 | 
| --- | --- | 
| ' | 單引號表示 Amazon Ion 結構中的字串值或欄位名稱。 | 
| " | 雙引號表示引號的識別符，例如用作資料表名稱的[保留字](ql-reference.reserved.md)。 | 
| ` | 反引號表示 Ion 常值。 | 
| . | 點表示法會存取父系結構的欄位名稱。 | 
| [ ] | 方括號定義 Ion list，或表示現有清單的零基序數。 | 
| \$1 \$1 | 大括號定義 Ion struct。 | 
| << >> | 雙角括號定義 PartiQL 包，這是未排序的集合。您可以使用包將多個文件插入資料表。 | 
| 區分大小寫 | 所有 QLDB 系統物件名稱，包括欄位名稱和資料表名稱，都區分大小寫。 | 

### PartiQL 編輯器鍵盤快速鍵
<a name="console_QLDB.partiql-editor-shortcuts"></a>

QLDB 主控台上的 *PartiQL 編輯器*支援下列鍵盤快速鍵。


| 動作 | macOS | Windows | 
| --- | --- | --- | 
| 執行 | Cmd\$1Return | Ctrl\$1Enter | 
| 註解 | Cmd\$1/ | Ctrl\$1/ | 
| Clear | Cmd\$1Shift\$1Delete | Ctrl\$1Shift\$1Delete | 

# 使用 存取 Amazon QLDB AWS CLI （僅限管理 API)
<a name="Tools.CLI"></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 Command Line Interface (AWS CLI) AWS 服務 從命令列控制多個 ，並透過指令碼將其自動化。您可以視需要使用 AWS CLI 進行一次性操作。您也可以使用它在公用程式指令碼中嵌入 Amazon QLDB 操作。

對於 CLI 存取，您需要存取金鑰 ID 和私密存取金鑰。盡可能使用臨時憑證，而不是長期存取金鑰。臨時憑證包含存取金鑰 ID、私密存取金鑰，以及指出憑證何時到期的安全符記。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[搭配 AWS 資源使用臨時憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

如需 中可用於 QLDB 之所有命令的完整清單和使用範例 AWS CLI，請參閱 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html)。

**注意**  
 AWS CLI 僅支援 中列出的`qldb`管理 API 操作[Amazon QLDB API 參考](api-reference.md)。此 API 僅用於管理總帳資源和非交易資料操作。  
若要使用命令列界面使用 `qldb-session` API 執行資料交易，請參閱 [使用 QLDB shell 存取 Amazon QLDB （僅限資料 API)](data-shell.md)。

**Topics**
+ [安裝和設定 AWS CLI](#Tools.CLI.InstallingAndConfiguring)
+ [AWS CLI 搭配 QLDB 使用](#Tools.CLI.UsingWithQLDB)

## 安裝和設定 AWS CLI
<a name="Tools.CLI.InstallingAndConfiguring"></a>

 AWS CLI 會在 Linux、macOS 或 Windows 上執行。若要安裝和設定它，請參閱*AWS Command Line Interface 《 使用者指南*》中的下列說明：

1. [安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

1. [快速設定](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)

## AWS CLI 搭配 QLDB 使用
<a name="Tools.CLI.UsingWithQLDB"></a>

命令列格式包含 Amazon QLDB 操作名稱，後面接著該操作的參數。除了 JSON 之外， AWS CLI 還支援參數值的速記語法。

 使用 `help` 列出 QLDB 中的所有可用命令：

```
aws qldb help
```

 您也可以使用 `help` 來描述特定命令，並進一步了解其用量：

```
aws qldb create-ledger help
```

 例如，若要建立總帳：

```
aws qldb create-ledger --name my-example-ledger --permissions-mode STANDARD
```

# 使用 QLDB shell 存取 Amazon QLDB （僅限資料 API)
<a name="data-shell"></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 提供命令列 Shell，用於與交易資料 API 互動。使用 QLDB shell，您可以在分類帳資料上執行 [PartiQL](ql-reference.md) 陳述式。

此 Shell 的最新版本是以 Rust 撰寫，且是預設`main`分支上 GitHub 儲存庫 [awslabs/amazon-qldb-shell](https://github.com/awslabs/amazon-qldb-shell) 中的開放原始碼。Python 版本 (v1) 仍可在`master`分支上的相同儲存庫中使用。

**注意**  
Amazon QLDB Shell 僅支援`qldb-session`交易資料 API。此 API 僅用於在 QLDB 分類帳上執行 PartiQL 陳述式。  
若要使用命令列界面與`qldb`管理 API 操作互動，請參閱 [使用 存取 Amazon QLDB AWS CLI （僅限管理 API)](Tools.CLI.md)。

此工具不適用於納入應用程式或用於生產用途。此工具的目標是讓您快速實驗 QLDB 和 PartiQL。

下列各節說明如何開始使用 QLDB shell。

**Topics**
+ [先決條件](#data-shell-prerequisites)
+ [安裝 shell](#data-shell-install)
+ [叫用 shell](#data-shell-invoking)
+ [Shell 參數](#data-shell-params)
+ [命令參考](#data-shell-reference)
+ [執行個別陳述式](#data-shell-indiv-statements)
+ [管理交易](#data-shell-transactions)
+ [結束 shell](#data-shell-exiting)
+ [範例](#data-shell-examples)

## 先決條件
<a name="data-shell-prerequisites"></a>

開始使用 QLDB shell 之前，您必須執行下列動作：

1. 請遵循 中的 AWS 設定指示[存取 Amazon QLDB](accessing.md)。這包含下列項目：

   1. 註冊 AWS。

   1. 建立具有適當 QLDB 許可的使用者。

   1. 授予開發的程式設計存取權。

1. 設定您的 AWS 登入資料和預設值 AWS 區域。如需說明，請參閱*AWS Command Line Interface 《 使用者指南*》中的[組態基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)概念。

   如需可用區域的完整清單，請參閱 中的 [Amazon QLDB 端點和配額](https://docs.aws.amazon.com/general/latest/gr/qldb.html)*AWS 一般參考*。

1. 對於`STANDARD`許可模式中的任何分類帳，建立 IAM 政策，授予您在適當資料表上執行 PartiQL 陳述式的許可。若要了解如何建立這些政策，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

## 安裝 shell
<a name="data-shell-install"></a>

若要安裝最新版本的 QLDB shell，請參閱 GitHub 上的 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#installation) 檔案。QLDB 會在 GitHub 儲存庫[的版本](https://github.com/awslabs/amazon-qldb-shell/releases)區段中提供 Linux、macOS 和 Windows 的預先建置二進位檔案。

對於 macOS， shell 與 `aws/tap` [Homebrew](https://docs.brew.sh/) 分接模組整合。若要使用 Homebrew 在 macOS 上安裝 Shell，請執行下列命令。

```
$ xcode-select --install # Required to use Homebrew
$ brew tap aws/tap # Add AWS as a Homebrew tap
$ brew install qldbshell
```

### 組態
<a name="data-shell-install.config"></a>

安裝後， shell 會在初始化`$XDG_CONFIG_HOME/qldbshell/config.ion`期間載入位於 的預設組態檔案。在 Linux 和 macOS 上，此檔案通常位於 `~/.config/qldbshell/config.ion`。如果不存在此類檔案，則 shell 會以預設設定執行。

您可以在安裝後手動建立`config.ion`檔案。此組態檔案使用 [Amazon Ion](ion.md) 資料格式。以下是最小`config.ion`檔案的範例。

```
{
  default_ledger: "my-example-ledger"
}
```

如果 `default_ledger` 未在組態檔案中設定，則當您叫用 shell 時，需要 `--ledger` 參數。如需組態選項的完整清單，請參閱 GitHub 上的 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#configuration) 檔案。

## 叫用 shell
<a name="data-shell-invoking"></a>

若要叫用特定分類帳命令列終端機上的 QLDB shell，請執行下列命令。將 *my-example-ledger* 取代為您的分類帳名稱。

```
$ qldb --ledger my-example-ledger
```

此命令會連線至您的預設值 AWS 區域。若要明確指定 區域，您可以使用 `--region`或 `--qldb-session-endpoint` 參數執行 命令，如下節所述。

叫用 `qldb` shell 工作階段之後，您可以輸入下列類型的輸入：
+ [Shell 命令](#data-shell-reference)
+ [個別交易中的單一 PartiQL 陳述式](#data-shell-indiv-statements)
+ [交易中的多個 PartiQL 陳述式](#data-shell-transactions)

## Shell 參數
<a name="data-shell-params"></a>

如需叫用 shell 的可用旗標和選項的完整清單，請使用 `--help`旗標執行 `qldb`命令，如下所示。

```
$ qldb --help
```

以下是 `qldb`命令的一些關鍵旗標和選項。您可以新增這些選用參數來覆寫 AWS 區域、登入資料設定檔、端點、結果格式和其他組態選項。

**用途**

```
$ qldb [FLAGS] [OPTIONS]
```FLAGS

**`-h`, `--help`**  
列印說明資訊。

**`-v`, `--verbose`**  
設定日誌記錄的真實性。根據預設， shell 只會記錄錯誤。若要提高動度層級，請重複此引數 （例如 `-vv`)。最高層級`-vvv`對應至`trace`動詞。

**`-V`, `--version`**  
列印版本資訊。OPTIONS

**`-l`、`--ledger`*LEDGER\$1NAME***  
要連線的分類帳名稱。如果 `default_ledger` 未在您的 `config.ion` 檔案中設定，則此為必要的 shell 參數。在此檔案中，您可以設定其他選項，例如 區域。

**`-c`、`--config`*CONFIG\$1FILE***  
您可以在其中定義任何 Shell 組態選項的檔案。如需格式化詳細資訊和組態選項的完整清單，請參閱 GitHub 上的 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#configuration) 檔案。

**`-f`, `--format` `ion|table`**  
查詢結果的輸出格式。預設值為 `ion`。

**`-p`、`--profile`*設定檔***  
要用於身分驗證的 AWS 登入資料設定檔位置。  
如果未提供，殼層會使用位於 的預設 AWS 設定檔`~/.aws/credentials`。

**`-r`、`--region`*REGION\$1CODE***  
要連線的 QLDB 分類帳 AWS 區域 程式碼。例如：`us-east-1`。  
如果未提供， shell AWS 區域 會連線至 AWS 設定檔中指定的預設值。

**`-s`、`--qldb-session-endpoint`*QLDB\$1SESSION\$1ENDPOINT***  
要連線的 `qldb-session` API 端點。  
如需可用 QLDB 區域和端點的完整清單，請參閱 中的 [Amazon QLDB 端點和配額](https://docs.aws.amazon.com/general/latest/gr/qldb.html)*AWS 一般參考*。

## 命令參考
<a name="data-shell-reference"></a>

叫用`qldb`工作階段後， shell 支援下列金鑰和資料庫命令：


**Shell 金鑰**  

| 金錀 | 函數描述 | 
| --- | --- | 
| Enter | 執行 陳述式。 | 
|  Escape＋Enter (macOS、Linux) Shift＋Enter (Windows)  |  開始新的行，以輸入跨越多行的陳述式。您也可以使用多行複製輸入文字，並將其貼到 shell 中。 如需在 macOS 中設定 Option而非Escape作為中繼金鑰的指示，請參閱 [OS X 每日](https://osxdaily.com/2013/02/01/use-option-as-meta-key-in-mac-os-x-terminal/)網站。  | 
| Ctrl\$1C | 取消目前的命令。 | 
| Ctrl\$1D | 訊號結束檔案 (EOF) 並結束 Shell 的目前層級。如果不在作用中交易中， 會結束 shell。在作用中交易中， 會中止交易。 | 


**Shell 資料庫命令**  
<a name="data-shell-reference-commands"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/data-shell.html)

**注意**  
所有 QLDB shell 命令不區分大小寫。

## 執行個別陳述式
<a name="data-shell-indiv-statements"></a>

除了 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#command-interface)：// 中列出的資料庫命令和 shell 中繼命令之外， shell 會解譯您輸入的每個命令，做為單獨的 PartiQL 陳述式。根據預設， shell 會啟用 `auto-commit` 模式。此模式是可設定的。

在 `auto-commit`模式中， shell 會隱含地在自己的交易中執行每個陳述式，如果找不到錯誤，則會自動遞交交易。這表示您不需要執行 `start transaction`（或 `begin`)，而且每次執行陳述式時都`commit`手動執行。

## 管理交易
<a name="data-shell-transactions"></a>

或者，QLDB shell 可讓您手動控制交易。您可以在交易中以互動方式執行多個陳述式，或以非互動方式依序批次處理命令和陳述式。

### 互動式交易
<a name="data-shell-transactions.interactive"></a>

若要執行互動式交易，請執行下列步驟。

1. 若要開始交易，請輸入 `begin`命令。

   ```
   qldb> begin
   ```

   開始交易後， shell 會顯示下列命令提示。

   ```
   qldb *>  
   ```

1. 然後，您輸入的每個陳述式都會在相同的交易中執行。
   + 例如，您可以執行單一陳述式，如下所示。

     ```
     qldb *> SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'
     ```

     按 後Enter， shell 會顯示陳述式的結果。
   + 您也可以輸入多個以分號 (`;`) 分隔符號分隔的陳述式或命令，如下所示。

     ```
     qldb *> SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; commit
     ```

1. 若要結束交易，請輸入下列其中一個命令。
   + 輸入 `commit`命令，將您的交易遞交至分類帳的日誌。

     ```
     qldb *> commit
     ```
   + 輸入 `abort`命令以停止交易，並拒絕您所做的任何變更。

     ```
     qldb *> abort
     transaction was aborted
     ```

**交易逾時限制**

互動式交易遵循 QLDB [的交易逾時限制](limits.md#limits.fixed)。如果您未在交易開始後 **30 秒**內遞交交易，QLDB 會自動過期交易，並拒絕交易期間所做的任何變更。

然後， shell 會顯示過期錯誤訊息，並返回正常命令提示字元，而不是顯示陳述式結果。若要重試，您必須再次輸入 `begin`命令才能開始新的交易。

```
transaction failed after 1 attempts, last error: communication failure: Transaction 2UMpiJ5hh7WLjVgEiMLOoO has expired
```

### 非互動交易
<a name="data-shell-transactions.noninteractive"></a>

您可以依序批次處理命令和陳述式，以執行具有多個陳述式的完整交易，如下所示。

```
qldb> begin; SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; SELECT * FROM Person p, DriversLicense l WHERE p.GovId = l.LicenseNumber; commit
```

您必須以分號 (`;`) 分隔符號分隔每個命令和陳述式。如果交易中的任何陳述式無效，殼層會自動拒絕交易。shell 不會繼續執行您輸入的任何後續陳述式。

您也可以設定多個交易。

```
qldb> begin; statement1; commit; begin; statement2; statement3; commit
```

與上一個範例類似，如果交易失敗， shell 不會繼續執行您輸入的任何後續交易或陳述式。

如果您不結束交易，殼層會切換到互動式模式，並提示您輸入下一個命令或陳述式。

```
qldb> begin; statement1; commit; begin
qldb *>
```

## 結束 shell
<a name="data-shell-exiting"></a>

若要結束目前的 `qldb` shell 工作階段，請輸入 `exit`或 `quit`命令，或在 shell 不在交易中時使用鍵盤快速鍵 Ctrl＋D。

```
qldb> exit
$
```

```
qldb> quit
$
```

## 範例
<a name="data-shell-examples"></a>

如需在 QLDB 中撰寫 PartiQL 陳述式的資訊，請參閱 [Amazon QLDB PartiQL 參考](ql-reference.md)。

**Example**  
下列範例顯示基本命令的常見序列。  
QLDB shell 會在自己的交易中執行此範例中的每個 PartiQL 陳述式。  
此範例假設分類帳`test-ledger`已存在且處於作用中狀態。

```
$ qldb --ledger test-ledger --region us-east-1

qldb> CREATE TABLE TestTable
qldb> INSERT INTO TestTable `{"Name": "John Doe"}`
qldb> SELECT * FROM TestTable
qldb> DROP TABLE TestTable
qldb> exit
```

# 使用 API 存取 Amazon QLDB
<a name="Using.API"></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 管理主控台 和 AWS Command Line Interface (AWS CLI) 以互動方式使用 Amazon QLDB。不過，若要充分利用 QLDB，您可以使用 QLDB 驅動程式或 AWS SDK 撰寫應用程式碼，以使用 APIs 與您的總帳互動。

驅動程式可讓您的應用程式使用*交易資料* API 與 QLDB 互動。 AWS 開發套件支援與 QLDB *資源管理* API 的互動。如需這些 APIs的詳細資訊，請參閱 [Amazon QLDB API 參考](api-reference.md)。

驅動程式支援 [Java](https://aws.amazon.com/sdk-for-java)、[.NET](https://aws.amazon.com/sdk-for-net)、[Go](https://aws.amazon.com/sdk-for-go)、[Node.js](https://aws.amazon.com/sdk-for-node-js) 和 [Python](https://aws.amazon.com/sdk-for-python) 中的 QLDB。若要快速開始使用這些語言，請參閱 [Amazon QLDB 驅動程式入門](getting-started-driver.md)。

您必須先授予程式設計存取權，才能在應用程式中使用 QLDB 驅動程式或 AWS SDK。如需詳細資訊，請參閱[授與程式設計存取權](accessing.md#grant-programmatic-access)。