使用 Cassandra Python 客户端驱动程序以编程方式访问亚马逊 Keyspaces - Amazon Keyspaces(针对 Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Cassandra Python 客户端驱动程序以编程方式访问亚马逊 Keyspaces

在本节中,我们将为您演示如何使用 Python 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供对 Amazon Keyspaces 资源进行编程访问的凭证,您可以执行以下任一操作:

开始前的准备工作

在开始之前,您需要完成以下任务。

Amazon Keyspaces 要求使用传输层安全性 (TLS) 以帮助保护与客户端的连接。要使用 TLS 连接到 Amazon Keyspaces,您需要下载 Amazon 数字证书,并将 Python 驱动程序配置为使用 TLS。

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

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

您还可以使用亚马逊数字证书连接到 Amazon Keyspaces,如果您的客户端成功连接到 Amazon Keyspaces,您可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户端提供了额外的向后兼容性。

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

使用适用于 Apache 卡桑德拉的 Python 驱动程序和特定于服务的凭据 Connect 到亚马逊 Keyspaces

以下代码示例说明如何使用 Python 客户端驱动程序和服务特定凭证连接到 Amazon Keyspaces。

from cassandra.cluster import Cluster from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED from cassandra.auth import PlainTextAuthProvider ssl_context = SSLContext(PROTOCOL_TLSv1_2 ) ssl_context.load_verify_locations('path_to_file/sf-class2-root.crt') ssl_context.verify_mode = CERT_REQUIRED auth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword') cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142) session = cluster.connect() r = session.execute('select * from system_schema.keyspaces') print(r.current_rows)

使用说明:

  1. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

  2. 确保服务用户名服务密码与您按照步骤生成服务特定凭证时获得的用户名和密码相匹配。生成服务特定凭证.

  3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点

使用适用于 Apache 卡桑德拉的 DataSax Python 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces

以下部分介绍如何使用 Sigv4 身份验证插件的开源 DataSax Python 驱动程序的 Apache Cassandra 访问亚马逊 Keyspaces(适用于 Apache 卡珊德拉)。插件可从获得GitHub 存储库.

将 Python Sigv4 身份验证插件添加到您的环境中。

pip install cassandra-sigv4

以下代码示例说明如何通过使用适用于卡桑德拉的开源 DataSax Python 驱动程序和 Sigv4 身份验证插件连接到亚马逊 Keyspaces。该插件取决于AmazonSDK for Python (Boto3)。它使用boto3.session以获取凭据。

from cassandra.cluster import Cluster from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED from cassandra.auth import PlainTextAuthProvider import boto3 from cassandra_sigv4.auth import SigV4AuthProvider ssl_context = SSLContext(PROTOCOL_TLSv1_2) ssl_context.load_verify_locations('path_to_file/sf-class2-root.crt') ssl_context.verify_mode = CERT_REQUIRED # use this if you want to use Boto to set the session parameters. boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE", aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", aws_session_token="AQoDYXdzEJr...<remainder of token>", region_name="us-east-2") auth_provider = SigV4AuthProvider(boto_session) # Use this instead of the above line if you want to use the Default Credentials and not bother with a session. # auth_provider = SigV4AuthProvider() cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142) session = cluster.connect() r = session.execute('select * from system_schema.keyspaces') print(r.current_rows)

使用说明:

  1. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

  2. 确保aws_access_key_idaws_secret_access_key,以及aws_session_token匹配Access KeySecret Access Key, 和Session Token您使用boto3.session. 有关更多信息,请参阅 。凭证中的Amazon SDK for Python (Boto3).

  3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点