QLDB使用QLDB外殼訪問 Amazon(API僅限數據) - Amazon Quantum 賬本數據庫(AmazonQLDB)

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

QLDB使用QLDB外殼訪問 Amazon(API僅限數據)

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

Amazon QLDB 提供了一個命令行外殼與交易數據進行交互API。使用QLDB命令介面,您可以針對分類帳資料執行 PartiQL 陳述式。

這個 shell 的最新版本是用 Rust 編寫的,是在默認分支的 GitHub倉庫 awslabs/ 中開源amazon-qldb-shell的。mainPython 版本 (v1) 仍然可以在master分支上的同一個存儲庫中使用。

注意

Amazon QLDB 外殼僅支持交qldb-session易數據API。這僅用API於在分QLDB類帳上執行 PartiQL 陳述式。

若要使用指令行介面與qldb管理API作業互動,請參閱QLDB使用訪問 Amazon AWS CLI (API僅限管理層)

此工具不打算被納入應用程序中或用於生產目的。這個工具的目的是讓你快速實驗QLDB和 PartiQL。

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

必要條件

在開始使用 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

安裝外殼

若要安裝最新版本的QLDB殼層,請參閱上 GitHub的 README.md 檔案。QLDB在 GitHub 存放庫的「版本」區段中,為 Linux、macOS 和視窗提供預先建置的二進位檔案。

對於 macOS,外殼與aws/tap自製水龍頭集成。要使用自製軟件在 macOS 上安裝外殼,請運行以下命令。

$ 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-sessionAPI端點。

如需可用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.md 中列出的資料庫命令和殼層中繼命令外,殼層會將您輸入的每個命令解譯為個別的 PartiQL 陳述式。依預設,殼層會啟用auto-commit模式。此模式是可配置的。

在此auto-commit模式中,殼層會以隱含方式在自己的交易中執行每個陳述式,如果沒有發現錯誤,就會自動認可交易。這表示您不必在每次執行陳述式時執行 start transaction (或begin) 和commit手動執行。

管理交易

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

互動式交易

要運行交互式事務,請執行以下步驟。

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

    qldb> begin

    在您開始交易之後,殼層會顯示下列命令提示字元。

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

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

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

      按下之後Enter,殼層會顯示陳述式的結果。

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

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

    • 輸入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殼層工作階段,請輸入exitquit命令,或在 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