使用 QLDB shell 存取 Amazon QLDB (僅限資料 API) - Amazon Quantum Ledger Database (Amazon QLDB)

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

使用 QLDB shell 存取 Amazon QLDB (僅限資料 API)

重要

支援終止通知:現有客戶將可以使用 Amazon QLDB,直到 07/31/2025 的支援結束為止。如需詳細資訊,請參閱將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL

Amazon QLDB 提供命令列 Shell,用於與交易資料 API 互動。使用 QLDB shell,您可以在分類帳資料上執行 PartiQL 陳述式。

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

注意

Amazon QLDB Shell 僅支援qldb-session交易資料 API。此 API 僅用於在 QLDB 分類帳上執行 PartiQL 陳述式。

若要使用命令列界面與qldb管理 API 操作互動,請參閱 使用 存取 Amazon QLDB AWS CLI (僅限管理 API)

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

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

先決條件

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

  1. 請遵循 中的 AWS 設定指示存取 Amazon QLDB。這包含下列項目:

    1. 註冊 AWS。

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

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

  2. 設定您的 AWS 登入資料和預設值 AWS 區域。如需說明,請參閱AWS Command Line Interface 《 使用者指南》中的組態基本概念。

    如需可用區域的完整清單,請參閱 中的 Amazon QLDB 端點和配額AWS 一般參考

  3. 對於STANDARD許可模式中的任何分類帳,建立 IAM 政策,授予您在適當資料表上執行 PartiQL 陳述式的許可。若要了解如何建立這些政策,請參閱 Amazon QLDB 中的標準許可模式入門

安裝 shell

若要安裝最新版本的 QLDB shell,請參閱 GitHub 上的 README.md 檔案。QLDB 會在 GitHub 儲存庫的版本區段中提供 Linux、macOS 和 Windows 的預先建置二進位檔案。

對於 macOS, shell 與 aws/tap Homebrew 分接模組整合。若要使用 Homebrew 在 macOS 上安裝 Shell,請執行下列命令。

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

組態

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

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

{ default_ledger: "my-example-ledger" }

如果 default_ledger 未在組態檔案中設定,則當您叫用 shell 時,需要 --ledger 參數。如需組態選項的完整清單,請參閱 GitHub 上的 README.md 檔案。

叫用 shell

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

$ qldb --ledger my-example-ledger

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

叫用 qldb shell 工作階段之後,您可以輸入下列類型的輸入:

Shell 參數

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

$ qldb --help

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

用途

$ qldb [FLAGS] [OPTIONS]
FLAGS
-h, --help

列印說明資訊。

-v, --verbose

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

-V, --version

列印版本資訊。

OPTIONS
-l--ledgerLEDGER_NAME

要連線的分類帳名稱。如果 default_ledger 未在您的 config.ion 檔案中設定,則此為必要的 shell 參數。在此檔案中,您可以設定其他選項,例如 區域。

-c--configCONFIG_FILE

您可以在其中定義任何 Shell 組態選項的檔案。如需格式化詳細資訊和組態選項的完整清單,請參閱 GitHub 上的 README.md 檔案。

-f, --format ion|table

查詢結果的輸出格式。預設值為 ion

-p--profile設定檔

要用於身分驗證的 AWS 登入資料設定檔位置。

如果未提供,殼層會使用位於 的預設 AWS 設定檔~/.aws/credentials

-r--regionREGION_CODE

要連線的 QLDB 分類帳 AWS 區域 程式碼。例如:us-east-1

如果未提供, shell AWS 區域 會連線至 AWS 設定檔中指定的預設值。

-s--qldb-session-endpointQLDB_SESSION_ENDPOINT

要連線的 qldb-session API 端點。

如需可用 QLDB 區域和端點的完整清單,請參閱 中的 Amazon QLDB 端點和配額AWS 一般參考

命令參考

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

Shell 金鑰
金錀 函數描述
Enter 執行 陳述式。

EscapeEnter (macOS、Linux)

ShiftEnter (Windows)

開始新的行,以輸入跨越多行的陳述式。您也可以使用多行複製輸入文字,並將其貼到 shell 中。

如需在 macOS 中設定 Option而非Escape作為中繼金鑰的指示,請參閱 OS X 每日網站。

Ctrl+C 取消目前的命令。
Ctrl+D 訊號結束檔案 (EOF) 並結束 Shell 的目前層級。如果不在作用中交易中, 會結束 shell。在作用中交易中, 會中止交易。
Shell 資料庫命令
Command 函數描述
help 顯示說明資訊。
begin 開始交易。
start transaction
commit 將您的交易遞交至分類帳的日誌。
abort 停止交易並拒絕您所做的任何變更。
exit 結束 Shell。
quit
注意

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

執行個別陳述式

除了 README.md:// 中列出的資料庫命令和 shell 中繼命令之外, shell 會解譯您輸入的每個命令,做為單獨的 PartiQL 陳述式。根據預設, shell 會啟用 auto-commit 模式。此模式是可設定的。

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

管理交易

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

互動式交易

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

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

    qldb> begin

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

    qldb *>
  2. 然後,您輸入的每個陳述式都會在相同的交易中執行。

    • 例如,您可以執行單一陳述式,如下所示。

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

      按 後Enter, shell 會顯示陳述式的結果。

    • 您也可以輸入多個以分號 (;) 分隔符號分隔的陳述式或命令,如下所示。

      qldb *> SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; commit
  3. 若要結束交易,請輸入下列其中一個命令。

    • 輸入 commit命令,將您的交易遞交至分類帳的日誌。

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

      qldb *> abort transaction was aborted

交易逾時限制

互動式交易遵循 QLDB 的交易逾時限制。如果您未在交易開始後 30 秒內遞交交易,QLDB 會自動過期交易,並拒絕交易期間所做的任何變更。

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

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

非互動交易

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

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

若要結束目前的 qldb shell 工作階段,請輸入 exitquit命令,或在 shell 不在交易中時使用鍵盤快速鍵 CtrlD

qldb> exit $
qldb> quit $

範例

如需在 QLDB 中撰寫 PartiQL 陳述式的資訊,請參閱 Amazon QLDB PartiQL 參考

下列範例顯示基本命令的常見序列。

注意

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