

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 cliente Python para Cassandra para acceder mediante programación a Amazon Keyspaces
<a name="using_python_driver"></a>

 En esta sección, le mostramos cómo conectarse a Amazon Keyspaces utilizando un controlador de cliente Python. 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 AWS servicios. 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_python_driver.BeforeYouBegin)
+ [Conexión a Amazon Keyspaces mediante el controlador Python para Apache Cassandra y credenciales específicas del servicio](#python_ssc)
+ [Conéctese a Amazon Keyspaces mediante el controlador de DataStax Python para Apache Cassandra y el complemento de autenticación SigV4](#python_SigV4)

## Antes de empezar
<a name="using_python_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, debe descargar los certificados digitales de Amazon y configurar el controlador de Python para que utilice 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 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.

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
```

## Conexión a Amazon Keyspaces mediante el controlador Python para Apache Cassandra y credenciales específicas del servicio
<a name="python_ssc"></a>

En el siguiente ejemplo de código se muestra cómo conectarse a Amazon Keyspaces con un controlador de cliente Python y credenciales específicas del servicio.

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2 )

ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')

ssl_context.verify_mode = CERT_REQUIRED
auth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword')
cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

Notas de uso:

1. `"path_to_file/keyspaces-bundle.pem"`Sustitúyala 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 controlador de DataStax Python para Apache Cassandra y el complemento de autenticación SigV4
<a name="python_SigV4"></a>

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

Si aún no lo ha hecho, empiece creando las credenciales del 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). En este tutorial se utilizan credenciales temporales que requieren un rol de IAM. Para obtener más información sobre credenciales temporales, consulte [Creación de credenciales temporales para conectarse a Amazon Keyspaces mediante un rol de IAM y el complemento SigV4](temporary.credentials.IAM.md).

A continuación, añada el complemento de autenticación SigV4 de Python a su entorno desde el [GitHub repositorio](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin).

```
pip install cassandra-sigv4
```

El siguiente ejemplo de código muestra cómo conectarse a Amazon Keyspaces mediante el controlador DataStax Python de código abierto para Cassandra y el complemento de autenticación SigV4. El plugin depende del AWS SDK para Python (Boto3). Utiliza `boto3.session` para obtener credenciales temporales. 

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider
import boto3
from cassandra_sigv4.auth import SigV4AuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2)
ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')
ssl_context.verify_mode = CERT_REQUIRED

# use this if you want to use Boto to set the session parameters.
boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE",
                             aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                             aws_session_token="AQoDYXdzEJr...<remainder of token>",
                             region_name="us-east-2")
auth_provider = SigV4AuthProvider(boto_session)

# Use this instead of the above line if you want to use the Default Credentials and not bother with a session.
# auth_provider = SigV4AuthProvider()

cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider,
                  port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

Notas de uso:

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

1. Asegúrate de que *aws\$1access\$1key\$1id**aws\$1secret\$1access\$1key*, y el *aws\$1session\$1token* coincidan con `Access Key``Secret Access Key`, y `Session Token` que obtuviste usando. `boto3.session` Para obtener más información, consulte la sección sobre [credenciales](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) en la *AWS SDK para Python (Boto3)*. 

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).