本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Cassandra Node.js 客户端驱动程序以编程方式访问亚马逊 Keyspaces
本节说明了如何使用 Node.js 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供凭证以编程方式访问 Amazon Keyspaces 资源,您可以执行以下任一操作:
-
创建与特定Amazon Identity and Access Management (IAM) 用户关联的服务特定凭证。
-
为了增强安全性,我们建议为所有Amazon服务中使用的 IAM 用户或角色创建 IAM 访问密钥。适用于 Cassandra 客户端驱动程序的 Amazon Keyspaces Sigv4 身份验证插件使您能够使用 IAM 访问密钥而不是用户名和密码对对 Amazon Keyspaces 的调用进行身份验证。有关更多信息,请参阅如何创建和配置AmazonAmazon Keyspaces 凭证:
主题
开始前的准备工作
您需要完成以下任务才能开始。
Amazon Keyspaces 要求使用传输层安全 (TLS) 来帮助保护与客户端的连接。要使用 TLS 连接到亚马逊Keyspaces,您需要下载亚马逊数字证书并将 Python 驱动程序配置为使用 TLS。
使用以下命令下载 Starfield 数字证书并保存在sf-class2-root.crt
本地或主目录中。
curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
注意
您还可以使用亚马逊数字证书连接到 Amazon Keyspaces,如果您的客户成功连接到 Amazon Keyspaces,则可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户端提供了额外的向后兼容性。
curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
使用适用于 Apache Cassandra 的 Node.js DataStax 驱动程序和特定于服务的凭证Connect 到 Amazon Keyspaces
将您的驱动程序配置为使用 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"按照中的步骤,确保
ServiceUserName
和ServicePassword
与您在生成服务特定凭证时获得的用户名和密码相匹配生成特定服务的凭证。有关可用终端节点的列表,请参阅Amazon Keyspaces 服务端点。
使用适用于 Apache Cassandra DataStax 的 Node.js 驱动程序和 SigV4 身份验证插件Connect 亚马逊 Keyspaces
以下部分介绍如何使用 Apache Cassandra 的开源 DataStax Node.js 驱动程序的 Sigv4 身份验证插件访问亚马逊 Keyspaces(适用于 Apache Cassandra)。
如果您尚未执行此操作,请按照步骤为您的 IAM 用户或角色创建凭证如何创建和配置AmazonAmazon Keyspaces 凭证。
将 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"确保
accessKeyId
和secretAccessKey
与您使用获得的访问密钥和私有访问密钥相匹配AWSCredentialsProvider
。有关更多信息,请参阅 Node.js 中的Amazon SDK 中的 Node.js JavaScript 中设置凭证。要将访问密钥存储在代码之外,请参阅中的最佳实践如何管理 IAM 用户的访问密钥。
有关可用终端节点的列表,请参阅Amazon Keyspaces 服务端点。