使用 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 的呼叫,而不是使用者名稱和密碼。如需詳細資訊,請參閱建立和設定 AWS Amazon Keyspaces 的憑據

開始之前

您需要完成下列任務才能開始。

Amazon Keyspaces 需要使用 Transport Layer Security (TLS) 來協助保護用戶端的連線。若要使用 連線至 Amazon KeyspacesTLS,您需要下載 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. 確保 ServiceUserName 以及 ServicePassword 符合您在產生服務特定憑證時取得的使用者名稱和密碼,方法是依照步驟 進行建立服務特定登入資料,以程式設計方式存取 Amazon Keyspaces

  3. 如需可用端點的清單,請參閱 Amazon Keyspaces 的服務端點

使用 DataStax適用於 Apache Cassandra 的 Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces

下一節說明如何使用適用於 Apache Cassandra 開放原始碼 DataStax Python 驅動程式的 SigV4 身分驗證外掛程式來存取 Amazon Keyspaces (適用於 Apache Cassandra)。

如果您尚未這麼做,請依照 中的步驟,開始為您的IAM角色建立憑證建立和設定 AWS Amazon Keyspaces 的憑據。本教學課程使用臨時憑證,需要 IAM角色。如需臨時憑證的詳細資訊,請參閱 使用IAM角色和 Sigv4 外掛程式建立臨時登入資料以連接到 Amazon Keyspaces

然後,從GitHub 儲存庫 將 Python SigV4 身分驗證外掛程式新增至您的環境。

pip install cassandra-sigv4

下列程式碼範例示範如何使用適用於 Cassandra 的開放原始碼 DataStax Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces。外掛程式取決於 AWS SDK 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. "path_to_file/sf-class2-root.crt" 以第一個步驟中儲存的憑證路徑取代 。

  2. 確保 aws_access_key_id, aws_secret_access_key,以及 aws_session_token 比對Session Token您使用 Access Key取得的 Secret Access Key、 和 boto3.session。如需詳細資訊,請參閱 中的憑證AWS SDK for Python (Boto3)

  3. 如需可用端點的清單,請參閱 Amazon Keyspaces 的服務端點