本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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-shellmaster
分支上的相同儲存庫中使用。
注意
Amazon QLDB Shell 僅支援qldb-session
交易資料 API。此 API 僅用於在 QLDB 分類帳上執行 PartiQL 陳述式。
若要使用命令列界面與qldb
管理 API 操作互動,請參閱 使用 存取 Amazon QLDB AWS CLI (僅限管理 API)。
此工具不適用於納入應用程式或用於生產用途。此工具的目標是讓您快速實驗 QLDB 和 PartiQL。
下列各節說明如何開始使用 QLDB shell。
先決條件
開始使用 QLDB shell 之前,您必須執行下列動作:
-
請遵循 中的 AWS 設定指示存取 Amazon QLDB。這包含下列項目:
-
註冊 AWS。
-
建立具有適當 QLDB 許可的使用者。
-
授予開發的程式設計存取權。
-
-
設定您的 AWS 登入資料和預設值 AWS 區域。如需說明,請參閱AWS Command Line Interface 《 使用者指南》中的組態基本概念。
如需可用區域的完整清單,請參閱 中的 Amazon QLDB 端點和配額AWS 一般參考。
-
對於
STANDARD
許可模式中的任何分類帳,建立 IAM 政策,授予您在適當資料表上執行 PartiQL 陳述式的許可。若要了解如何建立這些政策,請參閱 Amazon QLDB 中的標準許可模式入門。
安裝 shell
若要安裝最新版本的 QLDB shell,請參閱 GitHub 上的 README.md
對於 macOS, shell 與 aws/tap
Homebrew
$
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
、--ledger
LEDGER_NAME
-
要連線的分類帳名稱。如果
default_ledger
未在您的config.ion
檔案中設定,則此為必要的 shell 參數。在此檔案中,您可以設定其他選項,例如 區域。 -c
、--config
CONFIG_FILE
-
您可以在其中定義任何 Shell 組態選項的檔案。如需格式化詳細資訊和組態選項的完整清單,請參閱 GitHub 上的 README.md
檔案。 -f
,--format
ion|table
-
查詢結果的輸出格式。預設值為
ion
。 -p
、--profile
設定檔
-
要用於身分驗證的 AWS 登入資料設定檔位置。
如果未提供,殼層會使用位於 的預設 AWS 設定檔
~/.aws/credentials
。 -r
、--region
REGION_CODE
-
要連線的 QLDB 分類帳 AWS 區域 程式碼。例如:
us-east-1
。如果未提供, shell AWS 區域 會連線至 AWS 設定檔中指定的預設值。
-s
、--qldb-session-endpoint
QLDB_SESSION_ENDPOINT
-
要連線的
qldb-session
API 端點。如需可用 QLDB 區域和端點的完整清單,請參閱 中的 Amazon QLDB 端點和配額AWS 一般參考。
命令參考
叫用qldb
工作階段後, shell 支援下列金鑰和資料庫命令:
金錀 | 函數描述 |
---|---|
Enter | 執行 陳述式。 |
Escape+Enter (macOS、Linux) Shift+Enter (Windows) |
開始新的行,以輸入跨越多行的陳述式。您也可以使用多行複製輸入文字,並將其貼到 shell 中。 如需在 macOS 中設定 Option而非Escape作為中繼金鑰的指示,請參閱 OS X 每日 |
Ctrl+C | 取消目前的命令。 |
Ctrl+D | 訊號結束檔案 (EOF) 並結束 Shell 的目前層級。如果不在作用中交易中, 會結束 shell。在作用中交易中, 會中止交易。 |
Command | 函數描述 |
---|---|
help |
顯示說明資訊。 |
begin |
開始交易。 |
start transaction |
|
commit |
將您的交易遞交至分類帳的日誌。 |
abort |
停止交易並拒絕您所做的任何變更。 |
exit |
結束 Shell。 |
quit |
注意
所有 QLDB shell 命令不區分大小寫。
執行個別陳述式
除了 README.mdauto-commit
模式。此模式是可設定的。
在 auto-commit
模式中, shell 會隱含地在自己的交易中執行每個陳述式,如果找不到錯誤,則會自動遞交交易。這表示您不需要執行 start transaction
(或 begin
),而且每次執行陳述式時都commit
手動執行。
管理交易
或者,QLDB shell 可讓您手動控制交易。您可以在交易中以互動方式執行多個陳述式,或以非互動方式依序批次處理命令和陳述式。
互動式交易
若要執行互動式交易,請執行下列步驟。
-
若要開始交易,請輸入
begin
命令。qldb>
begin
開始交易後, shell 會顯示下列命令提示。
qldb *>
-
然後,您輸入的每個陳述式都會在相同的交易中執行。
-
例如,您可以執行單一陳述式,如下所示。
qldb *>
SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'
按 後Enter, shell 會顯示陳述式的結果。
-
您也可以輸入多個以分號 (
;
) 分隔符號分隔的陳述式或命令,如下所示。qldb *>
SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; commit
-
-
若要結束交易,請輸入下列其中一個命令。
-
輸入
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 工作階段,請輸入 exit
或 quit
命令,或在 shell 不在交易中時使用鍵盤快速鍵 Ctrl+D。
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