本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用卡桑德拉 Node.js 客戶端驅動程序以編程方式訪問 Amazon Keyspaces
本節介紹如何使用 Node.js 客戶端驅動程序連接到 Amazon Keyspaces。若要提供使用者和應用程式以程式設計方式存取 Amazon Keyspace 資源的登入資料,您可以執行下列其中一項作業:
-
建立與特定 AWS Identity and Access Management (IAM) 使用者相關聯的服務特定登入資料。
-
為了增強安全性,我們建議您為 IAM 使用者或跨所有 AWS 服務使用的角色建立 IAM 存取金鑰。適用於 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
Connect 到 Amazon Keyspaces 使用 Node.js DataStax 驅動程序 Apache 卡桑德拉和特定服務的憑據
將您的驅動程式設定為使用 Starfield 數位憑證進行 TLS,並使用服務特定憑證進行驗證。例如:
const cassandra = require('cassandra-driver'); const fs = require('fs'); const auth = new cassandra.auth.PlainTextAuthProvider('
ServiceUserName
', 'ServicePassword
'); const sslOptions1 = { ca: [ fs.readFileSync('path_to_file
/sf-class2-root.crt', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com
', rejectUnauthorized: true }; const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com
'], localDataCenter: 'us-west-2
', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } }); const query = 'SELECT * FROM system_schema.keyspaces'; client.execute(query) .then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));
使用注意事項:
取代
"
為第一個步驟中儲存的憑證路徑。path_to_file
/sf-class2-root.crt"請遵循下ServiceUser列步驟,確定名稱並
產生服務特定認證ServicePassword
符合您在產生服務特定認證時取得的使用者名稱和密碼。如需可用端點的清單,請參閱亞馬遜 Keyspaces 的服務端點。
使用 DataStax Node.js 驅動程序的 Apache 卡桑德拉和 SIGv4 身份驗證插件 Connect 到 Amazon Keyspaces
下面的部分演示了如何使用 Sigv4 身份驗證插件的開源 DataStax Node.js 驅動程序阿帕奇卡桑德拉訪問 Amazon Keyspaces(阿帕奇卡桑德拉)。
如果您尚未這麼做,請依照中的步驟為您的 IAM 使用者或角色建立登入資料如何創建和配置 Amazon Keyspaces 的 AWS 憑據。
將 Node.js Sigv4 身份驗證插件添加到您的應用程序從GitHub 存儲庫AWSCredentialsProvider
來獲取憑據。
$ npm install aws-sigv4-auth-cassandra-plugin --save
此程式碼範例顯示如何將的區域特定執行個體設定SigV4AuthProvider
為驗證提供者。
const cassandra = require('cassandra-driver'); const fs = require('fs'); const sigV4 = require('aws-sigv4-auth-cassandra-plugin'); const auth = new sigV4.SigV4AuthProvider({ region: '
us-west-2
', accessKeyId:'AKIAIOSFODNN7EXAMPLE
', secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
'}); const sslOptions1 = { ca: [ fs.readFileSync('path_to_file
cassandra/sf-class2-root.crt', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com
', rejectUnauthorized: true }; const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com
'], localDataCenter: 'us-west-2
', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } }); const query = 'SELECT * FROM system_schema.keyspaces'; client.execute(query).then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));
使用注意事項:
取代
"
為第一個步驟中儲存的憑證路徑。path_to_file
/sf-class2-root.crt"確保
存取KeyId
和密
碼與您使用取得的存取金鑰和秘密存取金鑰AccessKey相符AWSCredentialsProvider
。如需詳細資訊,請參閱在 Node.js 的AWS SDK 中的 Node.js JavaScript 中設定認證。若要將存取金鑰儲存在程式碼之外,請參閱的最佳做法如何管理 IAM 使用者的存取金鑰。
如需可用端點的清單,請參閱亞馬遜 Keyspaces 的服務端點。