使用 Cassandra Node.js 客户端驱动程序以编程方式访问亚马逊 Keyspaces - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 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}`));

使用说明:

  1. "path_to_file/sf-class2-root.crt"替换为第一步中保存的证书路径。

  2. 按照中的步骤,确保ServiceUserNameServicePassword与您在生成服务特定凭证时获得的用户名和密码相匹配生成特定服务的凭证

  3. 有关可用终端节点的列表,请参阅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 存储库添加到您的应用程序。该插件支持 Cassandra DataStax 的 Node.js 驱动程序的 4.x 版本,并且依赖于 Node.js 的Amazon SDK。它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_filecassandra/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}`));

使用说明:

  1. "path_to_file/sf-class2-root.crt"替换为第一步中保存的证书路径。

  2. 确保accessKeyIdsecretAccessKey与您使用获得的访问密钥和私有访问密钥相匹配AWSCredentialsProvider。有关更多信息,请参阅 Node.js 中的Amazon SDK 中的 Node.js JavaScript 中设置凭证

  3. 要将访问密钥存储在代码之外,请参阅中的最佳实践如何管理 IAM 用户的访问密钥

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