本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
QLDB使用QLDB外殼訪問 Amazon(API僅限數據)
重要
支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL
Amazon QLDB 提供了一個命令行外殼與交易數據進行交互API。使用QLDB命令介面,您可以針對分類帳資料執行 PartiQL 陳述式。
這個 shell 的最新版本是用 Rust 編寫的,是在默認分支的 GitHub倉庫 awslabs/main
Python 版本 (v1) 仍然可以在master
分支上的同一個存儲庫中使用。
注意
Amazon QLDB 外殼僅支持交qldb-session
易數據API。這僅用API於在分QLDB類帳上執行 PartiQL 陳述式。
若要使用指令行介面與qldb
管理API作業互動,請參閱QLDB使用訪問 Amazon AWS CLI (API僅限管理層)。
此工具不打算被納入應用程序中或用於生產目的。這個工具的目的是讓你快速實驗QLDB和 PartiQL。
下列各節說明如何開始使用QLDB殼層。
必要條件
在開始使用 QLDB shell 之前,您必須執行以下操作:
-
請遵循中的 AWS 設定指示訪問 Amazon QLDB。這包含下列項目:
-
註冊 AWS.
-
建立具有適當QLDB權限的使用者。
-
授予程序化訪問以進行開發。
-
-
設定您的 AWS 憑證和預設值 AWS 區域。如需指示,請參閱《AWS Command Line Interface 使用指南》中的「組態基本知識
如需可用區域的完整 Amazon QLDB 單,請參閱 AWS 一般參考.
-
對於
STANDARD
權限模式下的任何分類帳,請建立IAM原則,以授與您在適當資料表上執行 PartiQL 陳述式的權限。若要瞭解如何建立這些原則,請參閱開始使用 Amazon 的標準許可模式 QLDB。
安裝外殼
若要安裝最新版本的QLDB殼層,請參閱上 GitHub的 README.md
對於 macOS,外殼與aws/tap
自製
$
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
。如果這樣的檔案不存在,殼層會以預設設定執行。
您可以在安裝後手動建立config.ion
檔案。此組態檔案使用 Amazon 離子資料格式。以下是最小config.ion
檔案的範例。
{ default_ledger: "my-example-ledger" }
如果default_ledger
未在配置文件中設置,則在調用 shell 時需要該--ledger
參數。如需組態選項的完整清單,請參閱上 GitHub的 README.md
調用命令介面
若要在指令列終端機上叫用特定總帳的 QLDB shell,請執行下列命令。Replace (取代) my-example-ledger
與您的分類帳名稱。
$
qldb --ledger
my-example-ledger
此指令會連接至您的預設值 AWS 區域。若要明確指定「區域」,您可以使用--region
或--qldb-session-endpoint
參數執行命令,如下一節所述。
調用 qldb
shell 會話後,您可以輸入以下類型的輸入:
薄殼參數
如需可用旗標和叫用 shell 選項的完整清單,請使用--help
旗標執行qldb
命令,如下所示。
$
qldb --help
以下是qldb
指令的一些主要旗標和選項。您可以新增這些選用參數來覆寫 AWS 區域、認證設定檔、端點、結果格式和其他組態選項。
用途
$
qldb [FLAGS]
[OPTIONS]
FLAGS
-h
,--help
-
列印說明資訊。
-v
,--verbose
-
設定記錄詳細資訊。根據預設,殼層只會記錄錯誤。若要提高詳細程度層級,請重複此引數 (例如,
-vv
)。最高層級是對-vvv
應於trace
詳細程度。 -V
,--version
-
列印版本資訊。
OPTIONS
-l
,--ledger
LEDGER_NAME
-
要連線的分類帳名稱。如果沒有在您的
config.ion
文件中設置,這default_ledger
是必需的 shell 參數。在此檔案中,您可以設定其他選項,例如「區域」。 -c
,--config
CONFIG_FILE
-
您可以在其中定義任何 shell 配置選項的文件。如需格式化詳細資訊和組態選項的完整清單,請參閱上 GitHub的 README.md
檔案。 -f
,--format
ion|table
-
查詢結果的輸出格式。預設值為
ion
。 -p
,--profile
PROFILE
-
用於驗證的身份證 AWS 明設定檔位置。
如果未提供,shell 會使用您的預設設 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區域和端點的完整清單,請參閱 AWS 一般參考. QLDB
命令參考
在您叫用qldb
工作階段之後,殼層支援下列金鑰和資料庫命令:
金錀 | 功能描述 |
---|---|
Enter | 執行陳述式。 |
Escape+ Enter (macOS 系統) Shift+ Enter (視窗) |
開始新行以輸入跨越多行的陳述式。您也可以複製帶有多行的輸入文本並將其粘貼到 shell 中。 如需在 macOS 中設定Option而非中Escape繼金鑰的指示,請參閱 OS X 每日 |
Ctrl+C | 取消目前的指令。 |
Ctrl+D | 信號文件結束(EOF)並退出 shell 的當前級別。如果不在使用中交易中,則結束 shell。在作用中的交易中,中止交易。 |
Command | 功能描述 |
---|---|
help |
顯示說明資訊。 |
begin |
開始交易。 |
start transaction |
|
commit |
將交易確認至分類帳的分錄。 |
abort |
停止交易並拒絕您所做的任何變更。 |
exit |
結束薄殼。 |
quit |
注意
所有 QLDB shell 命令都不區分大小寫。
執行個別陳述式
除了 README.mdauto-commit
模式。此模式是可配置的。
在此auto-commit
模式中,殼層會以隱含方式在自己的交易中執行每個陳述式,如果沒有發現錯誤,就會自動認可交易。這表示您不必在每次執行陳述式時執行 start transaction
(或begin
) 和commit
手動執行。
管理交易
或者,QLDB殼層可讓您手動控制交易。您可以在交易中以互動方式執行多個陳述式,或依序批次處理命令和陳述式,以非互動方式執行。
互動式交易
要運行交互式事務,請執行以下步驟。
-
若要開始交易,請輸入
begin
指令。qldb>
begin
在您開始交易之後,殼層會顯示下列命令提示字元。
qldb *>
-
然後,您輸入的每個陳述式都會在相同的交易中執行。
-
例如,您可以執行如下單一陳述式。
qldb *>
SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'
按下之後Enter,殼層會顯示陳述式的結果。
-
您也可以輸入多個以分號 (
;
) 分隔符號分隔的陳述式或命令,如下所示。qldb *>
SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; commit
-
-
若要結束交易,請輸入下列其中一個指令。
-
輸入
commit
指令,將交易確認至分類帳的分錄。qldb *>
commit
-
輸入
abort
指令以停止交易並拒絕您所做的任何變更。qldb *>
abort
transaction was aborted
-
交易逾時限制
互動式交易會遵守QLDB的交易逾時限制。如果您未在啟動交易後的 30 秒內確認交易,QLDB會自動將交易過期,並拒絕交易期間所做的任何變更。
接著,殼層會顯示到期錯誤訊息,並返回正常的命令提示字元,而不是顯示陳述式結果。若要重試,您必須再次輸入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
您必須使用分號 (;
) 分隔符號來分隔每個命令和陳述式。如果交易中的任何陳述式無效,殼層會自動拒絕該交易。命令介面不會繼續處理您輸入的任何後續陳述式。
您也可以設定多筆交易。
qldb>
begin; statement1
; commit; begin; statement2
; statement3
; commit
與前面的範例類似,如果交易失敗,shell 就不會繼續處理您輸入的任何後續交易或陳述式。
如果您不結束交易,殼層會切換到互動模式,並提示您輸入下一個命令或陳述式。
qldb>
begin; statement1
; commit; begin
qldb *>
退出外圍程序
若要結束目前的qldb
殼層工作階段,請輸入exit
或quit
命令,或在 shell 不在交易中D時使用鍵盤快速鍵 Ctrl +。
qldb>
exit
$
qldb>
quit
$
範例
如需有關在中撰寫 PartiQL 陳述式的詳細資訊QLDB,請參閱. Amazon QLDB 参考
下面的例子顯示了基本命令的常見序列。
注意
QLDB命令介面會在本身的交易中執行此範例中的每個 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