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

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

使用卡桑德拉 Node.js 客户端驱动程序以编程方式访问亚马逊 Keyspaces

本节介绍如何使用 Node.js 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供对 Amazon Keyspaces 资源进行编程访问的凭证,您可以执行以下任一操作:

开始前的准备工作

在开始之前,您需要完成以下任务。

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 Keyspaces,如果您的客户端成功连接到 Amazon Keyspaces,您可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户端提供了额外的向后兼容性。

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Connect 到亚马逊 Keyspaces,使用NodeJS用于 Apache 卡桑德拉的 DataSax 驱动程序和特定于服务的凭据

将驱动程序配置为使用 TLS 的 Starfield 数字证书,并使用特定于服务的凭据进行身份验证。例如:

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. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

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

  3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点

使用适用于 Apache 卡桑德拉的 DataSax NodeJS 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces

以下部分介绍如何使用开源 DataStax NodeJS 驱动程序的 Sigv4 身份验证插件来访问亚马逊 Keyspaces(适用于 Apache Cassandra)。插件可从获得GitHub 存储库.

将 NodeJS JS sigv4 身份验证插件添加到您的应用程序中。该插件支持适用于 Cassandra 的 DataSax NodeJS JS 驱动程序 4.x 版。该插件取决于Amazon适用于 NodeJS JS 的软件开发工具包。它使用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. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

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

  3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点