View a markdown version of this page

Uso de un controlador de Node.js cliente Cassandra para acceder a Amazon Keyspaces mediante programación - Amazon Keyspaces (para Apache Cassandra)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de un controlador de Node.js cliente Cassandra para acceder a Amazon Keyspaces mediante programación

En esta sección se muestra cómo conectarse a Amazon Keyspaces mediante un controlador de Node.js cliente. Para proporcionar a los usuarios y a las aplicaciones credenciales de acceso programático a los recursos de Amazon Keyspaces, puede realizar cualquiera de las siguientes acciones:

  • Crear credenciales específicas del servicio que se vinculen a un usuario de AWS Identity and Access Management (IAM) específico.

  • Para mejorar la seguridad, recomendamos crear claves de acceso de IAM para los usuarios o roles de IAM que se utilicen en todos los servicios. AWS El complemento de autenticación SigV4 de Amazon Keyspaces para controladores de cliente de Cassandra habilita la autenticación de llamadas a Amazon Keyspaces utilizando claves de acceso de IAM en vez de nombre de usuario y contraseña. Para obtener más información, consulte Creación y configuración de AWS credenciales para Amazon Keyspaces.

Antes de empezar

Debe completar la siguiente tarea antes de comenzar.

Amazon Keyspaces requiere el uso de Seguridad de la capa de transporte (TLS) para ayudar a proteger las conexiones con los clientes. Para conectarse a Amazon Keyspaces mediante TLS, necesita descargar un certificado digital de Amazon y configurar el controlador Python para utilizar TLS.

Descargue los siguientes certificados digitales y guarde los archivos de forma local o en su directorio principal.

  1. AmazonRootCA1

  2. AmazonRootCA2

  3. AmazonRootCA3

  4. AmazonRootCA4

  5. Starfield Class 2 Root (opcional, para compatibilidad con versiones anteriores)

Para descargar los certificados, puede usar los siguientes comandos.

curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
nota

Anteriormente, Amazon Keyspaces utilizaba certificados TLS anclados a la CA de clase 2 de Starfield. AWS está migrando todo Regiones de AWS a certificados emitidos bajo Amazon Trust Services (Amazon Root CA 1—4). Durante esta transición, configure los clientes para que confíen en las CA raíz 1—4 de Amazon y en la raíz de Starfield para garantizar la compatibilidad en todas las regiones.

Combine todos los certificados descargados en un solo pem archivo con el nombre de nuestros keyspaces-bundle.pem ejemplos. Puede hacerlo ejecutando el siguiente comando : Tome nota de la ruta al archivo, la necesitará más adelante.

cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ > keyspaces-bundle.pem

Conéctese a Amazon Keyspaces mediante el Node.js DataStax controlador de Apache Cassandra y las credenciales específicas del servicio

Configure su controlador para que utilice el archivo de certificado combinado keyspaces-bundle.pem para TLS y se autentique con credenciales específicas del servicio. Por ejemplo:

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/keyspaces-bundle.pem', '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}`));

Notas de uso:

  1. "path_to_file/keyspaces-bundle.pem"Sustitúyalo por la ruta al archivo de certificado combinado guardado en el primer paso.

  2. Asegúrese de que el nombre de usuario ServiceUserName y la contraseña que obtuvo al generar las credenciales específicas del servicio ServicePassword coinciden. Para ello, siga los pasos que se indican a continuación. Creación de credenciales específicas del servicio para el acceso programático a Amazon Keyspaces

  3. Para obtener una lista de los puntos de conexión disponibles, consulte Puntos de conexión de servicio para Amazon Keyspaces.

Conéctese a Amazon Keyspaces mediante el DataStax Node.js controlador para Apache Cassandra y el complemento de autenticación SigV4

En la siguiente sección, se muestra cómo utilizar el complemento de autenticación SigV4 para que el DataStax Node.js controlador de código abierto de Apache Cassandra acceda a Amazon Keyspaces (para Apache Cassandra).

Si aún no lo ha hecho, cree credenciales para su usuario o rol de IAM; para ello, siga los pasos que se indican en Creación y configuración de AWS credenciales para Amazon Keyspaces.

Agregue el complemento de autenticación Node.js SigV4 a su aplicación desde el repositorio. GitHub El complemento es compatible con la versión 4.x del DataStax Node.js controlador de Cassandra y depende del AWS SDK que tenga. Node.js Utiliza AWSCredentialsProvider para obtener credenciales.

$ npm install aws-sigv4-auth-cassandra-plugin --save

En este ejemplo de código se muestra cómo configurar una Region-specific instancia de SigV4AuthProvider como proveedor de autenticación.

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/keyspaces-bundle.pem', '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}`));

Notas de uso:

  1. Sustituya "path_to_file/keyspaces-bundle.pem" por la ruta al certificado guardado en el primer paso.

  2. Asegúrese de que la accessKeyId clave de acceso y la clave de acceso secreta que obtuvo utilizando secretAccessKey coincidanAWSCredentialsProvider. Para obtener más información, consulta Cómo configurar las credenciales Node.js JavaScript en el AWS SDK Node.js.

  3. Para almacenar las claves de acceso fuera del código, consulte las prácticas recomendadas en Almacenamiento de claves de acceso para el acceso programático.

  4. Para obtener una lista de los puntos de conexión disponibles, consulte Puntos de conexión de servicio para Amazon Keyspaces.