使用cqlsh连接亚马逊 Keyspaces - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用cqlsh连接亚马逊 Keyspaces

使用连接至亚马逊密钥空间cqlsh,你可以使用cqlsh-expansion。这是一个包含常见的 Apache Cassandra 工具的工具包,比如cqlsh以及为 Amazon Keyspaces 预先配置的帮助程序,同时保持与 Apache Cassandra 的完全兼容。的cqlsh-expansion集成了 SigV4 身份验证插件,允许您使用 IAM 访问密钥而不是用户名和密码进行连接。您只需要安装cqlsh用于建立连接的脚本而不是完整的 Apache Cassandra 发行版,因为 Amazon Keyspaces 是无服务器的。这个轻量级安装包包括cqlsh-expansion还有经典cqlsh可以在任何支持 Python 的平台上安装的脚本。

有关的一般信息cqlsh,见cqlsh: CQL 外壳

使用cqlsh-expansion连接亚马逊 Keyspaces

安装和配置cqlsh-expansion
  1. 安装cqlsh-expansionPython 软件包,你可以运行一个pip命令。安装cqlsh-expansion在您的计算机上使用脚本pip 安装以及一个包含依赖关系列表的文件。的--user flag告诉pip使用适用于您的平台的 Python 用户安装目录。在基于 Unix 的系统上,这应该是~/.local/目录。

    你需要 Python 3 来安装cqlsh-expansion,要找出你的 Python 版本,请使用Python --version。要进行安装,你可以运行以下命令。

    python3 -m pip install --user cqlsh-expansion
    pip3 install --user cqlsh-expansion

    要确认软件包已安装,可以运行cqlsh-expansion --version。输出应如下所示。

    cqlsh 6.1.0
  2. 要配置cqlsh-expansion,您可以运行安装后脚本来自动完成以下步骤:

    1. 创建.cassandra为基础目录提供额外一层用户主目录。

    2. 复制预先配置的cqlshrc配置文件到.cassandra目录。

    3. 将 Starfield 数字证书复制到.cassandra目录。Amazon Keyspaces 使用此证书为基础安全 (TLS) 配置安全连接。保护您的数据免受额外一层数据保护。

    要先查看脚本,可以在 Github 存储库中访问该脚本,网址为post_install.py

    要使用该脚本,可以运行以下命令。

    cqlsh-expansion.init
    注意

    卸载安装后脚本时不会删除安装后脚本创建的目录和文件cqlsh-expansion使用pip uninstall,必须手动删除。

使用连接到 Amazon Keyspacescqlsh-expansion
  1. 配置您的Amazon Web Services 区域并将其添加为用户环境变量。

    要在 Linux 系统上将您的默认区域添加为环境变量,可以运行以下命令。在本示例中,我们使用美国东部(弗吉尼亚北部)。

    export AWS_DEFAULT_REGION=us-east-1

    有关如何设置环境变量的更多信息,包括为其他平台设置环境变量,请参阅如何设置环境变量

  2. 找到您的服务终端节点。

    为你的地区选择适当的服务终端节点。要查看 Amazon Keyspaces 的可用终端节点,请参阅Amazon Keyspaces 服务端点。在本示例中,我们使用端点cassandra.us-east-1.amazonaws.com

  3. 配置身份验证方法。

    为了增强安全性,建议使用 IAM 访问密钥(IAM 用户、角色和联合身份)进行连接。

    在使用 IAM 访问密钥连接,为基础存储提供额外一层访问:

    1. 创建 IAM 用户,或者按照最佳实践创建一个 IAM 用户可以代入的 IAM 角色。有关如何创建 IAM 访问密钥的更多信息,请参阅如何为亚马逊Keyspaces 创建和配置Amazon证书

    2. 创建一个 IAM 策略,向角色(或 IAM 用户)授予对 Amazon Keyspaces 的至少只读访问权限。有关 IAM 用户或角色连接所需权限的更多信息,请参阅访问亚马逊密钥空间表

    3. 将 IAM 用户的访问密钥添加到用户的环境变量中。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

      有关如何设置环境变量的更多信息,包括为其他平台设置环境变量,请参阅如何设置环境变量

  4. 使用 Connect 连接到 Amazon Keyspacescqlsh-expansion和 Sigv4 身份验证。

    使用连接到 Amazon Keyspacescqlsh-expansion,您可以使用以下命令。请务必将服务终端节点替换为适合您所在地区的正确终端节点。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl

    如果连接成功,您应该看到类似于以下示例的输出。

    Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142 [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh current consistency level is ONE. cqlsh>
    • 使用特定服务的凭证连接到 Amazon Keyspaces。

      要连接 Cassandra 用于身份验证的传统用户名和密码组合,您必须先为 Amazon Keyspaces 创建特定于服务的凭证,如中所述生成特定服务证书。您还必须向该用户授予访问 Amazon Keyspaces 的权限,有关更多信息,请参阅访问亚马逊密钥空间表

      为用户创建用户、密码和 IAM 策略后,您可以使用以下命令进行连接。请务必将终端节点以及用户名和密码替换为自己的终端节点以及用户名和密码。

      cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 -u myUserName -p myPassword --ssl
清除
  • 删除cqlsh-expansion你可以使用的软件包pip uninstall命令。

    pip3 uninstall cqlsh-expansion

    pip3 uninstall命令不会删除安装后脚本创建的目录和相关文件。要删除安装后脚本创建的文件夹和文件,可以删除.cassandra目录。

如何手动配置cqlsh适用于 TLS 的连接

Amazon Keyspaces 仅接受使用传输层安全 (TLS) 进行安全连接。您可以使用cqlsh-expansion该实用程序会自动为您下载证书并安装预先配置的证书cqlshrc配置文件。有关更多信息,请参阅使用cqlsh-expansion连接亚马逊 Keyspaces在这个页面上。

如果要下载证书并手动配置连接,则可以使用以下步骤进行操作。

  1. 使用以下命令下载 Starfield 数字证书并保存sf-class2-root.crt本地或您的主目录中。

    curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
    注意

    您还可以使用亚马逊数字证书连接亚马逊密钥空间,如果您的客户成功连接到亚马逊密钥空间,则可以继续进行连接。Starfield 证书为使用旧证书颁发机构的客户提供了额外的向后兼容性。

  2. 打开cqlshrc例如,Cassandra 主目录中的配置文件${HOME}/.cassandra/cqlshrc并添加以下几行。

    [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory [ssl] validate = true certfile = path_to_file/sf-class2-root.crt