

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
<a name="using_nodejs_driver"></a>

 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](access.credentials.md).

**Topics**
+ [Antes de empezar](#using_nodejs_driver.BeforeYouBegin)
+ [Conéctese a Amazon Keyspaces mediante el Node.js DataStax controlador de Apache Cassandra y las credenciales específicas del servicio](#nodejs_ssc)
+ [Conéctese a Amazon Keyspaces mediante el DataStax Node.js controlador para Apache Cassandra y el complemento de autenticación SigV4](#nodejs_SigV4)

## Antes de empezar
<a name="using_nodejs_driver.BeforeYouBegin"></a>

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

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. 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
<a name="nodejs_ssc"></a>

 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.

1. 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](programmatic.credentials.ssc.md) 

1. Para obtener una lista de los puntos de conexión disponibles, consulte [Puntos de conexión de servicio para Amazon Keyspaces](programmatic.endpoints.md).

## Conéctese a Amazon Keyspaces mediante el DataStax Node.js controlador para Apache Cassandra y el complemento de autenticación SigV4
<a name="nodejs_SigV4"></a>

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](access.credentials.md).

[Agregue el complemento de autenticación Node.js SigV4 a su aplicación desde el repositorio. GitHub ](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin) 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.

1. Asegúrese de que la {{accessKeyId}} clave de acceso y la clave de acceso secreta que obtuvo utilizando {{secretAccessKey}} coincidan`AWSCredentialsProvider`. Para obtener más información, consulta [Cómo configurar las credenciales Node.js JavaScript en](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html) *el AWS SDK Node.js*. 

1. 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](aws.credentials.manage.md).

1. Para obtener una lista de los puntos de conexión disponibles, consulte [Puntos de conexión de servicio para Amazon Keyspaces](programmatic.endpoints.md).