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

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

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

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

  • 创建与特定服务关联的服务特定凭证Amazon Identity and Access Management(IAM) 用户。

  • 为了增强安全性,我们建议为所有用户或角色创建 IAM 访问密钥Amazon服务。适用于 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
注意

您也可以使用亚马逊数字证书连接到亚马逊Keyspaces,如果您的客户端成功连接到亚马逊Keyspaces,则可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户提供了额外的向后兼容性。

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

使用 Node.js Connect 亚马逊Keyspaces DataStax Apache Cassandra 的驱动程序和特定服务凭证

将您的驱动程序配置为使用 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. Replace(替换)"path_to_file/sf-class2-root.crt"在第一步中保存了证书的路径。

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

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

使用以下命令Connect 亚马逊Keyspaces DataStax 适用于 Apache Cassandra 和 Sigv4 身份验证插件的 Node.js 驱动程序

以下部分介绍如何使用开源的 SigV4 身份验证插件 DataStax Node.js for Apache Cassandra 访问亚马逊 Keyspaces spache Cassandra。

如果您尚未执行此操作,请按照以下步骤为您的 IAM 用户或角色创建凭证如何创建和配置AmazonAmazon Keyspaces 凭证.

将 Node.js Sigv4 身份验证插件从中添加到您的应用程序中GitHub 知识库. 该插件支持 4.x 版 DataStax适用于 Cassandra 的 Node.js 驱动程序取决于Amazon适用于 Node.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适用于 GOR JavaScript 在 Node.js 中.

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

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