本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
QLDB使用QLDB外壳访问亚马逊(API仅限数据)
重要
终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL
Amazon QLDB 提供了用于与交易数据API交互的命令行外壳。使用QLDB外壳程序,您可以对账本数据运行 PartiQL 语句。
这个 shell 的最新版本是用 Rust 编写的,在默认分支的 awslabs/ GitHubmain
Python 版本(v1)也仍然可以在 master
分支的同一个存储库中使用。
注意
Amazon QLDB 外壳仅支持qldb-session
交易数据API。这API仅用于在账本上运行 PartiQL 语句。QLDB
要使用命令行界面与qldb
管理API操作进行交互,请参见QLDB使用 Amazon 访问 AWS CLI (API仅限管理)。
此工具不会整合至应用程序中或用于生产目的。此工具的目标是让你快速试用 Parti QLDB QL。
以下各节介绍如何开始使用 QLDB shell。
先决条件
在开始使用 QLDB shell 之前,必须执行以下操作:
-
按照中的 AWS 设置说明进行操作访问亚马逊 QLDB。这包括以下这些:
-
报名参加 AWS.
-
创建具有相应QLDB权限的用户。
-
授权以编程方式访问开发。
-
-
设置您的 AWS 凭据和默认凭证 AWS 区域。有关说明,请参阅 AWS Command Line Interface 用户指南中的配置基础。
有关可用区域的完整列表,请参阅中的 Amazon QLDB 终端节点和配额AWS 一般参考。
-
对于任何处于
STANDARD
权限模式的账本,请创建IAM策略,授予您在相应表上运行 PartiQL 语句的权限。要了解如何创建这些策略,请参阅 开始使用 Amazon 中的标准权限模式 QLDB。
安装 Shell
要安装最新版本的QLDB外壳,请参阅上的 README GitHub.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
参数。有关配置选项的完整列表,请参阅上的 README GitHub.md
调用 Shell
要在命令行终端上为特定账本调用 QLDB shell,请运行以下命令。Replace(替换) 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
)。最高等级为对应于trace
的-vvv
。 -V
,--version
-
打印版本信息。
OPTIONS
-l
,--ledger
LEDGER_NAME
-
要连接的分类账的名称。如果
default_ledger
未在您的config.ion
文件中设置,则其为 Shell 必填参数。在此文件中,您可以设置其他选项,如区域。 -c
,--config
CONFIG_FILE
-
可在其中定义任何 Shell 配置选项的文件。有关格式的详细信息和配置选项的完整列表,请参阅上的 README GitHub.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区域和终端节点的完整列表,请参阅中的 Amazon QLDB 终端节点和配额AWS 一般参考。
命令参考
调用 qldb
会话后,Shell 支持以下密钥和数据库命令:
键 | 函数描述 |
---|---|
Enter | 运行语句。 |
Escape+Enter(macOS, Linux) Shift+Enter(Windows) |
开始新行,输入一条跨越多行的语句。您也可以复制多行输入文本,然后将其粘贴至 Shell。 有关在 macOS 中设置Option而非Escape作为元密钥的说明,请参阅OS X Daily |
Ctrl+C | 取消当前命令。 |
Ctrl+D | 发出文件结尾信号 (EOF) 并退出 shell 的当前级别。如不在活动事务中,则退出 Shell。在活动事务中,请中止该事务。 |
命令 | 函数描述 |
---|---|
help |
显示帮助信息。 |
begin |
开始事务。 |
start transaction |
|
commit |
将您的事务提交至分类账日志账中。 |
abort |
停止您的事务,并拒绝您所做的任何更改。 |
exit |
退出 Shell。 |
quit |
注意
所有 QLDB shell 命令都不区分大小写。
运行单独语句
除了 README.mdauto-commit
模式。此模式为可配置。
在auto-commit
模式下,Shell 会在自己的事务中隐式运行每条语句,如果未发现错误,则自动提交事务。这意味着您不必在每次运行语句时都手动运行start transaction
(或 begin
)和 commit
。
管理事务
或者,s QLDB hell 允许您手动控制事务。您可在事务中以交互方式运行多个语句,也可以通过按顺序批处理命令和语句来以非交互方式运行多个语句。
交互式事务
若要运行交互式事务,请执行以下步骤。
-
要开始事务,请输入
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 会自动拒绝该事务。Shell 不会继续处理您随后输入的任何语句项。
您还可设置多笔事务。
qldb>
begin; statement1
; commit; begin; statement2
; statement3
; commit
与前面的示例类似的是,如果事务失败,Shell 将不会继续处理您输入的任何后续事务或语句。
如果您不结束事务,Shell 会切换至交互模式,并提示您输入下一个命令或语句。
qldb>
begin; statement1
; commit; begin
qldb *>
退出 Shell
要退出当前 qldb
Shell 会话,请输入exit
或quit
命令,或者在 Shell 不在事务中时使用键盘快捷键Ctrl+D。
qldb>
exit
$
qldb>
quit
$
示例
有关在中编写 PartiQL 语句的信息QLDB,请参阅。亚马逊 P QLDB artiQL 参考资料
以下示例显示基本命令常见序列。
注意
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