

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 `cqlsh` para conectarse a Amazon Keyspaces
<a name="programmatic.cqlsh"></a>

Para conectarse a Amazon Keyspaces con `cqlsh`, puede utilizar la `cqlsh-expansion`. Se trata de un conjunto de herramientas que contiene herramientas comunes de Apache Cassandra como `cqlsh` y asistentes preconfigurados para Amazon Keyspaces que mantienen una compatibilidad total con Apache Cassandra. La `cqlsh-expansion` integra el complemento de autenticación SigV4 y le permite conectarse utilizando claves de acceso de IAM en lugar de nombre de usuario y contraseña. Solo necesita instalar los scripts de `cqlsh` para realizar una conexión y no la distribución completa de Apache Cassandra, dado que Amazon Keyspaces funciona sin servidor. Este paquete de instalación ligero incluye la `cqlsh-expansion` y los scripts clásicos de `cqlsh` que puede instalar en cualquier plataforma que admita Python.

**nota**  
`Murmur3Partitioner` es el particionador recomendado para Amazon Keyspaces y la `cqlsh-expansion`. La `cqlsh-expansion` no es compatible con el `DefaultPartitioner` de Amazon Keyspaces. Para obtener más información, consulte [Uso de particionadores en Amazon Keyspaces](working-with-partitioners.md).

Para obtener información general sobre `cqlsh`, consulte [`cqlsh`: el intérprete de comandos CQL](https://cassandra.apache.org/doc/latest/cassandra/managing/tools/cqlsh.html).

**Topics**
+ [

## Uso de la `cqlsh-expansion` para conectarse a Amazon Keyspaces
](#using_cqlsh)
+ [

## Configuración manual de conexiones de `cqlsh` para TLS
](#encrypt_using_tls)

## Uso de la `cqlsh-expansion` para conectarse a Amazon Keyspaces
<a name="using_cqlsh"></a>

**Instalación y configuración de la `cqlsh-expansion`**

1. Para instalar el paquete `cqlsh-expansion` para Python, puede ejecutar un comando `pip`. Este instala los scripts de `cqlsh-expansion` en su máquina utilizando un *pip install* junto con un archivo que contiene una lista de dependencias. La `--user flag` le dice a `pip` que utilice el directorio de instalación del usuario de Python para su plataforma. En un sistema basado en Unix, ese debe ser el directorio `~/.local/`.

   Necesita Python 3 para instalar la `cqlsh-expansion`; si quiere averiguar cuál es su versión de Python, utilice `Python --version`. Para la instalación, puede ejecutar el siguiente comando.

   ```
   python3 -m pip install --user cqlsh-expansion
   ```

   La salida debería ser similar a la siguiente.

   ```
   Collecting cqlsh-expansion
     Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.7/153.7 KB 3.3 MB/s eta 0:00:00
   Collecting cassandra-driver
     Downloading cassandra_driver-3.28.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.1/19.1 MB 44.5 MB/s eta 0:00:00
   Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from cqlsh-expansion) (1.16.0)
   Collecting boto3
     Downloading boto3-1.29.2-py3-none-any.whl (135 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.8/135.8 KB 17.2 MB/s eta 0:00:00
   Collecting cassandra-sigv4>=4.0.2
     Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB)
   Collecting botocore<1.33.0,>=1.32.2
     Downloading botocore-1.32.2-py3-none-any.whl (11.4 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 60.9 MB/s eta 0:00:00
   Collecting s3transfer<0.8.0,>=0.7.0
     Downloading s3transfer-0.7.0-py3-none-any.whl (79 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 KB 13.1 MB/s eta 0:00:00
   Collecting jmespath<2.0.0,>=0.7.1
     Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
   Collecting geomet<0.3,>=0.1
     Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB)
   Collecting python-dateutil<3.0.0,>=2.1
     Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 33.1 MB/s eta 0:00:00
   Requirement already satisfied: urllib3<2.1,>=1.25.4 in /usr/lib/python3/dist-packages (from botocore<1.33.0,>=1.32.2->boto3->cqlsh-expansion) (1.26.5)
   Requirement already satisfied: click in /usr/lib/python3/dist-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.0.3)
   Installing collected packages: python-dateutil, jmespath, geomet, cassandra-driver, botocore, s3transfer, boto3, cassandra-sigv4, cqlsh-expansion
     WARNING: The script geomet is installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
     WARNING: The scripts cqlsh, cqlsh-expansion and cqlsh-expansion.init are installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
   Successfully installed boto3-1.29.2 botocore-1.32.2 cassandra-driver-3.28.0 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1 jmespath-1.0.1 python-dateutil-2.8.2 s3transfer-0.7.0
   ```

   Si el directorio de instalación no está en la `PATH`, debe agregarlo siguiendo las instrucciones de su sistema operativo. A continuación se muestra un ejemplo para Ubuntu Linux.

   ```
   export PATH="$PATH:/home/ubuntu/.local/bin"
   ```

   Para confirmar que el paquete esté instalado, puede ejecutar el siguiente comando.

   ```
   cqlsh-expansion --version
   ```

   La salida debería tener este aspecto.

   ```
   cqlsh 6.1.0
   ```

1. Para configurar la `cqlsh-expansion`, puede ejecutar un script post-instalación para completar automáticamente los siguientes pasos:

   1. Cree el directorio `.cassandra` en el directorio de inicio del usuario si aún no existe.

   1. Copie un archivo de configuración `cqlshrc` preconfigurado en el directorio `.cassandra`.

   1. Copie el archivo de certificado combinado en el `.cassandra` directorio. Amazon Keyspaces utiliza este certificado para configurar la conexión segura con Seguridad de la capa de transporte (TLS). El cifrado en tránsito proporciona una capa adicional de protección de datos al cifrar sus datos mientras viajan hacia y desde Amazon Keyspaces. Para obtener más información sobre los certificados, consulte[Configuración manual de conexiones de `cqlsh` para TLS](#encrypt_using_tls).

   Para revisar antes el script, puede acceder al mismo en el repositorio de Github en [https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py](https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py).

   Para utilizar el script, puede ejecutar el siguiente comando. 

   ```
   cqlsh-expansion.init
   ```
**nota**  
El directorio y el archivo creados por el script post-instalación no se eliminan al desinstalar la `cqlsh-expansion` utilizando `pip uninstall` por lo que se tienen que eliminar manualmente.

**Conexión a Amazon Keyspaces mediante la `cqlsh-expansion`**

1. Configure su variable de entorno de usuario Región de AWS y agréguela como variable de entorno de usuario.

   Para añadir su región predeterminada como variable de entorno en un sistema basado en Unix, puede ejecutar el siguiente comando. Para este ejemplo, utilizamos`us-east-1`.

   ```
   export AWS_DEFAULT_REGION=us-east-1
   ```

   Para obtener más información sobre cómo establecer variables de entorno, incluso para otras plataformas, consulte [Establecimiento de variables de entorno](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set).

1. Encuentre el punto de conexión de servicio.

   Elija el punto de conexión de servicio apropiado para su región. Para revisar los puntos de conexión disponibles para Amazon Keyspaces, consulte [Puntos de conexión de servicio para Amazon Keyspaces](programmatic.endpoints.md). En este ejemplo, utilizamos el punto de conexión `cassandra.us-east-1.amazonaws.com`.

1. Configure el método de autenticación.

   Para mejorar la seguridad, el método recomendado es conectarse con claves de acceso de IAM (usuarios, roles e identidades federadas de IAM). 

   Para poder conectarse con claves de acceso de IAM, debe completar los siguientes pasos:

   1. Cree un usuario de IAM, u observe la práctica recomendada y cree un rol de IAM que los usuarios de IAM puedan asumir. Para obtener más información sobre cómo crear claves de acceso de IAM, consulte [Creación y configuración de AWS credenciales para Amazon Keyspaces](access.credentials.md).

   1. Cree una política de IAM que conceda al rol (o usuario de IAM) al menos acceso de solo lectura a Amazon Keyspaces. Para obtener más información sobre los permisos necesarios para que el usuario o rol de IAM se conecten a Amazon Keyspaces, consulte [Acceso a las tablas de Amazon Keyspaces](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table).

   1. Añada las claves de acceso del usuario de IAM a las variables de entorno del usuario como se muestra en el siguiente ejemplo.

      ```
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
      export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      ```

      Para obtener más información sobre cómo establecer variables de entorno, incluso para otras plataformas, consulte [Establecimiento de variables de entorno](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set).
**nota**  
Si se conecta desde una instancia de Amazon EC2, también debe configurar una regla de salida en el grupo de seguridad que permita el tráfico desde la instancia hasta Amazon Keyspaces. Para obtener más información sobre cómo ver y editar las reglas de salida de EC2, consulte [Adición de reglas a un grupo de seguridad en la Guía del usuario de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

1. Conéctese a Amazon Keyspaces utilizando la `cqlsh-expansion` y la autenticación SigV4.

   Para conectarse a Amazon Keyspaces con la `cqlsh-expansion`, puede utilizar el siguiente comando. Asegúrese de sustituir el punto de conexión de servicio por el punto de conexión correcto para su región.

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

   Si la conexión tiene éxito, debería ver una salida similar a la del siguiente ejemplo.

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   cqlsh>
   ```

   Si encuentra algún error, consulte [No puedo conectarme a Amazon Keyspaces con cqlsh](troubleshooting.connecting.md#troubleshooting.connection.cqlsh) para ver información de solución de problemas.
   + Conéctese a Amazon Keyspaces con credenciales específicas del servicio.

     Para conectarse con la combinación tradicional de nombre de usuario y contraseña que Cassandra utiliza para autenticación, primero debe crear credenciales específicas del servicio para Amazon Keyspaces como se describe en [Creación de credenciales específicas del servicio para el acceso programático a Amazon Keyspaces](programmatic.credentials.ssc.md). También tiene que dar a ese usuario permisos para acceder a Amazon Keyspaces. Para obtener más información, consulte [Acceso a las tablas de Amazon Keyspaces](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table). 

     Una vez creadas las credenciales específicas del servicio y los permisos para el usuario, debe actualizar el archivo `cqlshrc`, que suele encontrarse en la ruta del directorio de usuario `~/.cassandra/`. En el archivo `cqlshrc`, vaya a la sección `[authentication]` de Cassandra y comente el módulo SigV4 y la clase bajo `[auth_provider]` utilizando el carácter ";", como se muestra en el siguiente ejemplo. 

     ```
     [auth_provider]
     
     ; module = cassandra_sigv4.auth
     
     ; classname = SigV4AuthProvider
     ```

     Una vez actualizado el archivo `cqlshrc`, puede conectarse a Amazon Keyspaces con las credenciales específicas del servicio mediante el siguiente comando.

     ```
     cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 -u myUserName -p myPassword --ssl
     ```

**Limpieza**
+ Para eliminar el paquete de `cqlsh-expansion`, puede utilizar el comando `pip uninstall`.

  ```
  pip3 uninstall cqlsh-expansion
  ```

  El comando `pip3 uninstall` no elimina el directorio ni los archivos relacionados creados por el script post-instalación. Para eliminar el directorio y los archivos creados por el script post-instalación, puede eliminar el directorio `.cassandra`.

## Configuración manual de conexiones de `cqlsh` para TLS
<a name="encrypt_using_tls"></a>

Amazon Keyspaces solo acepta conexiones seguras utilizando Seguridad de la capa de transporte (TLS). Puede usar la `cqlsh-expansion` utilidad que descarga automáticamente los certificados e instala un archivo de `cqlshrc` configuración preconfigurado. Para obtener más información, consulte [Uso de la `cqlsh-expansion` para conectarse a Amazon Keyspaces](#using_cqlsh) en esta página. 

Si desea descargar los certificados y configurar la conexión manualmente, puede hacerlo siguiendo estos pasos. 

1.  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 CAs 1—4). Durante esta transición, configure los clientes para que confíen tanto en la raíz CAs 1—4 de Amazon como en la raíz de Starfield para garantizar la compatibilidad en todas las regiones.

1. Combine todos los certificados descargados en un único `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
   ```

1. Abra el archivo de configuración `cqlshrc` en el directorio de inicio de Cassandra, por ejemplo `${HOME}/.cassandra/cqlshrc`, y añada las siguientes líneas.

   ```
   [connection]
   port = 9142
   factory = cqlshlib.ssl.ssl_transport_factory
   
   [ssl]
   validate = true
   certfile =  path_to_file/keyspaces-bundle.pem
   ```