使用 Cassandra Python 客户端驱动程序以编程方式访问 Amazon Keyspaces - Amazon Keyspaces(Apache Cassandra 兼容)

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

在本部分中,我们介绍了如何使用 Python 客户端驱动程序连接 Amazon Keyspaces。要为用户和应用程序提供凭证,以通过编程方式访问 Amazon Keyspaces 资源,您可以执行以下任一操作:

  • 创建与特定 AWS Identity and Access Management (IAM) 用户关联的服务特定凭证。

  • 为了增强安全性,建议您为 IAM 用户或角色创建 IAM 访问密钥,以便在所有 AWS 服务中使用。借助适用于 Cassandra 客户端驱动程序的 Amazon Keyspaces SigV4 身份验证插件,您可以使用 IAM 访问密钥而不是用户名和密码来验证对 Amazon Keyspaces 的调用。有关更多信息,请参阅 如何为 Amazon Keyspaces 创建和配置 AWS 凭证

开始前的准备工作

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

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 数字证书连接到 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 与您按照创建用于通过编程方式访问 Amazon Keyspaces 的服务特定凭证。中的步骤生成服务特定凭证时获得的用户名和密码一致。

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

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

以下部分介绍了如何使用适用于 Apache Cassandra 的开源 DataStax Python 驱动程序的 SigV4 身份验证插件访问 Amazon Keyspaces(Apache Cassandra 兼容)。

请先按照如何为 Amazon Keyspaces 创建和配置 AWS 凭证中的步骤为 IAM 角色创建凭证(如果您尚未创建)。本教程使用临时凭证,需要一个 IAM 角色。有关临时凭证的更多信息,请参阅使用 IAM 角色和 SigV4 插件创建用于连接 Amazon Keyspaces 的临时凭证

然后,将 Python SigV4 身份验证插件从 GitHub 存储库添加到环境中。

pip install cassandra-sigv4

以下代码示例展示了如何使用适用于 Cassandra 的开源 DataStax Python 驱动程序和 SigV4 身份验证插件连接 Amazon Keyspaces。该插件依赖适用于 Python 的 AWS SDK (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_idaws_secret_access_keyaws_session_token 与使用 boto3.session 获取的Access KeySecret Access KeySession Token相匹配。有关详细信息,请参阅AWS SDK for Python (Boto3) 中的凭证

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