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

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

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

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

开始前的准备工作

您需要先完成以下任务,然后才能启动 。

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

使用以下命令下载 Starfield 数字证书并将其保存到 path_to_file/ 目录中。

注意

您还可以使用 Amazon 数字证书连接到 Amazon Keyspaces,并可以在客户端成功连接到 Amazon Keyspaces 时继续执行此操作。Starfield 证书为使用旧证书颁发机构的客户端提供额外的向后兼容性。

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

使用适用于 Apache Cassandra 的 Python 驱动程序和特定于服务的凭证连接到 Amazon 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. "path_to_file/sf-class2-root.crt" 替换为第一步中保存的证书的路径。

  2. 确保 ServiceUserNameServicePassword 与您在生成服务特定凭证时通过执行步骤获取的用户名和密码匹配生成服务特定凭证

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

使用适用于 Apache Cassandra 的 DataStax Python 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces

以下部分演示如何使用适用于 Apache Cassandra 的开源 DataStax Python 驱动程序的 SigV4 身份验证插件访问 Amazon Keyspaces(针对 Apache Cassandra)。GitHub 存储库中提供了该插件。

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

pip install cassandra-sigv4

以下代码示例说明如何使用 Cassandra 的开源 DataStax Python 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces。该插件依赖于适用于 Python 的 AWS 开发工具包 (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. "path_to_file/sf-class2-root.crt" 替换为第一步中保存的证书的路径。

  2. 确保 aws_access_key_id, aws_secret_access_keyaws_session_token 与您使用 获取的访问密钥、秘密访问密钥和会话令牌匹配boto3.session。有关更多信息,请参阅适用于 Python 的 AWS 开发工具包 (Boto3 中的凭证。

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