本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Cassandra Python 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces
在本節中,我們會示範如何使用 Python 用戶端驅動程式連線至 Amazon Keyspaces。若要提供使用者和應用程式以程式設計方式存取 Amazon Keyspaces 資源的登入資料,您可以執行下列其中一項操作:
-
建立與特定 AWS Identity and Access Management (IAM) 使用者相關聯的服務特定登入資料。
-
為了增強安全性,我們建議為所有 AWS 服務中使用的IAM使用者或角色建立IAM存取金鑰。Cassandra 用戶端驅動程式的 Amazon Keyspaces SigV4 身分驗證外掛程式可讓您使用IAM存取金鑰來驗證對 Amazon Keyspaces 的呼叫,而不是使用者名稱和密碼。如需詳細資訊,請參閱建立和設定 Amazon Keyspaces 的 AWS 登入資料。
主題
開始之前
您需要先完成下列任務,才能開始。
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)
用量備註:
"
將 取代為第一個步驟中儲存的憑證路徑。path_to_file
/sf-class2-root.crt"依照步驟 ,確定
ServiceUserName
和ServicePassword
符合您產生服務特定登入資料時取得的使用者名稱和密碼建立服務特定登入資料,以程式設計方式存取 Amazon Keyspaces。如需可用端點的清單,請參閱Amazon Keyspaces 的服務端點。
使用 DataStax適用於 Apache Cassandra 的 Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces
下一節說明如何使用適用於 Apache Cassandra 開放原始碼 DataStax Python 驅動程式的 SigV4 身分驗證外掛程式來存取 Amazon Keyspaces (適用於 Apache Cassandra)。
如果您尚未這麼做,請先依照 中的步驟,為您的IAM角色建立登入資料建立和設定 Amazon Keyspaces 的 AWS 登入資料。本教學課程使用臨時登入資料,需要 IAM角色。如需臨時登入資料的詳細資訊,請參閱使用 IAM角色和 SigV4 外掛程式建立臨時登入資料以連線至 Amazon Keyspaces。
然後,從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)
用量備註:
"
將 取代為第一個步驟中儲存的憑證路徑。path_to_file
/sf-class2-root.crt"確定
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)。 如需可用端點的清單,請參閱Amazon Keyspaces 的服務端點。