Solución de problemas de conexión en Amazon Keyspaces - 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.

Solución de problemas de conexión en Amazon Keyspaces

¿Tiene problemas para conectarse? A continuación se indican algunos problemas comunes y la forma de resolverlos.

Errores al conectarse a un punto de conexión de Amazon Keyspaces

Las conexiones fallidas y los errores de conexión pueden dar lugar a diferentes mensajes de error. En la siguiente sección se describen los escenarios más comunes.

No puedo conectarme a Amazon Keyspaces con cqlsh

Está intentando conectarse a un punto de conexión de Amazon Keyspaces con cqlsh y la conexión falla con un Connection error.

Si intenta conectarse a una tabla de Amazon Keyspaces y cqlsh no se ha configurado correctamente, la conexión falla. En la siguiente sección se ofrecen ejemplos de los problemas de configuración más comunes que causan errores de conexión al intentar establecer una conexión con cqlsh.

nota

Si intenta conectarse a Amazon Keyspaces desde una VPC, se requieren permisos adicionales. Para configurar correctamente una conexión utilizando puntos de conexión de VPC, siga los pasos indicados en el Tutorial: Conexión a Amazon Keyspaces mediante un punto de conexión de VPC de interfaz.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero obtiene un error de conexión timed out.

Esto podría deberse a que no ha suministrado el puerto correcto, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com 9140 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.199': error(None, "Tried connecting to [('3.234.248.199', 9140)]. Last error: timed out")})

Para resolver este problema, verifique que esté utilizando el puerto 9142 para la conexión.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero obtiene un error Name or service not known.

Esto podría deberse a que ha utilizado un punto de conexión que está mal escrito o que no existe. En el siguiente ejemplo, el nombre del punto de conexión está mal escrito.

# cqlsh cassandra.us-east-1.amazon.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Traceback (most recent call last): File "/usr/bin/cqlsh.py", line 2458, in >module> main(*read_options(sys.argv[1:], os.environ)) File "/usr/bin/cqlsh.py", line 2436, in main encoding=options.encoding) File "/usr/bin/cqlsh.py", line 484, in __init__ load_balancing_policy=WhiteListRoundRobinPolicy([self.hostname]), File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.11.0-bb96859b.zip/cassandra-driver-3.11.0-bb96859b/cassandra/policies.py", line 417, in __init__ socket.gaierror: [Errno -2] Name or service not known

Para resolver este problema al utilizar puntos de conexión públicos para conectarse, seleccione un punto de conexión disponible en Puntos de conexión de servicio para Amazon Keyspaces y compruebe que el nombre del punto de conexión no tenga ningún error. Si utiliza puntos de conexión de VPC para conectarse, compruebe que la información del punto de conexión de VPC sea correcta en la configuración de cqlsh.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error OperationTimedOut.

Amazon Keyspaces requiere que se habilite SSL para las conexiones a fin de garantizar una seguridad sólida. Es posible que falte el parámetro SSL si recibe el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" Connection error: ('Unable to connect to any servers', {'3.234.248.192': OperationTimedOut('errors=Timed out creating connection (5 seconds), last_host=None',)}) #

Para resolver este problema, añada el siguiente indicador al comando de conexión de cqlsh.

--ssl

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error SSL transport factory requires a valid certfile to be specified.

En este caso, falta la ruta al certificado SSL/TLS, lo que provoca el siguiente error.

# cat .cassandra/cqlshrc [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory # # cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Validation is enabled; SSL transport factory requires a valid certfile to be specified. Please provide path to the certfile in [ssl] section as 'certfile' option in /root/.cassandra/cqlshrc (or use [certfiles] section) or set SSL_CERTFILE environment variable. #

Para resolver este problema, añada la ruta al certfile de su ordenador.

certfile = path_to_file/sf-class2-root.crt

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error No such file or directory.

Este podría deberse a que la ruta al archivo de certificado en su ordenador es incorrecta, lo que provoca el siguiente error.

# cat .cassandra/cqlshrc [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory [ssl] validate = true certfile = /root/wrong_path/sf-class2-root.crt # # cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.192': IOError(2, 'No such file or directory')}) #

Para resolver este problema, compruebe que la ruta al archivo de certificado en su ordenador sea correcta.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error [X509] PEM lib.

Este podría deberse a que el archivo del certificado SSL/TLS sf-class2-root.crt no es válido, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.241': error(185090057, u"Tried connecting to [('3.234.248.241', 9142)]. Last error: [X509] PEM lib (_ssl.c:3063)")}) #

Para resolver este problema, descargue el certificado digital de Starfield con el siguiente comando. Guarde sf-class2-root.crt localmente o en su directorio personal.

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

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error de SSL unknown.

Este podría deberse a que el archivo del certificado SSL/TLS sf-class2-root.crt está vacío, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.220': error(0, u"Tried connecting to [('3.234.248.220', 9142)]. Last error: unknown error (_ssl.c:3063)")}) #

Para resolver este problema, descargue el certificado digital de Starfield mediante el siguiente comando. Guarde sf-class2-root.crt localmente o en su directorio personal.

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

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error SSL: CERTIFICATE_VERIFY_FAILED.

Este podría deberse a que el archivo del certificado SSL/TLS no se pudo verificar, lo que provoca el siguiente error.

Connection error: ('Unable to connect to any servers', {'3.234.248.223': error(1, u"Tried connecting to [('3.234.248.223', 9142)]. Last error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)")})

Para resolver este problema, vuelva a descargar el archivo de certificado con el siguiente comando. Guarde sf-class2-root.crt localmente o en su directorio personal.

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

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error Last error: timed out.

Esto podría deberse a que no configuró una regla de salida para Amazon Keyspaces en su grupo de seguridad de Amazon EC2, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.206': error(None, "Tried connecting to [('3.234.248.206', 9142)]. Last error: timed out")}) #

Para confirmar que este problema se debe a la configuración de la instancia Amazon EC2 y nocqlsh, puede intentar conectarse a su espacio de claves mediante AWS CLI, por ejemplo, el siguiente comando.

aws keyspaces list-tables --keyspace-name 'my_keyspace'

Si este comando también agota el tiempo de espera, la instancia de Amazon EC2 no está configurada correctamente.

Para confirmar que tienes permisos suficientes para acceder a Amazon Keyspaces, puedes usar AWS CloudShell para conectarte con. cqlsh Si se establecen esas conexiones, debe configurar la instancia de Amazon EC2.

Para resolver este problema, confirme que su instancia de Amazon EC2 tenga una regla de salida que permita el tráfico a Amazon Keyspaces. Si ese no es el caso, debe crear un nuevo grupo de seguridad para la instancia EC2 y añadir una regla que permita el tráfico saliente a los recursos de Amazon Keyspaces. Para actualizar la regla de salida para permitir el tráfico a Amazon Keyspaces, elija CQLSH/CASSANDRA en el menú desplegable Tipo.

Tras crear el nuevo grupo de seguridad con la regla de tráfico saliente, debe añadirlo a la instancia. Seleccione la instancia y, a continuación, elija Acciones, Seguridad y, por último, Cambiar grupos de seguridad. Agregue el nuevo grupo de seguridad con la regla de salida, pero asegúrese de que el grupo predeterminado también permanezca disponible.

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 para instancias Linux.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error Unauthorized.

Este podría deberse a que le faltan permisos de Amazon Keyspaces en la política de usuario de IAM, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "testuser-at-12345678910" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.241': AuthenticationFailed('Failed to authenticate to 3.234.248.241: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::12345678910:user/testuser has no permissions."',)}) #

Para resolver este problema, asegúrese de que el usuario de IAM testuser-at-12345678910 tenga permisos para acceder a Amazon Keyspaces. Para ver ejemplos de políticas de IAM que concedan acceso a Amazon Keyspaces, consulte Ejemplos de políticas basadas en identidades de Amazon Keyspaces.

Para obtener una guía de solución de problemas específica para el acceso a IAM, consulte Solución de problemas de identidad y acceso a Amazon Keyspaces.

Está intentando conectarse a Amazon Keyspaces con cqlsh, pero recibe un error Bad credentials.

Este podría deberse a que el nombre de usuario o la contraseña son incorrectos, lo que provoca el siguiente error.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.248': AuthenticationFailed('Failed to authenticate to 3.234.248.248: Error from server: code=0100 [Bad credentials] message="Provided username USERNAME and/or password are incorrect"',)}) #

Para resolver este problema, compruebe que USERNAME y PASSWORD en su código coincidan con el nombre de usuario y la contraseña que obtuvo al generar las credenciales específicas del servicio.

importante

Si sigue viendo errores al intentar conectarse con cqlsh, vuelva a ejecutar el comando con la opción --debug e incluya la salida detallada al contactar con AWS Support.

No puedo conectarme a Amazon Keyspaces con un controlador de cliente de Cassandra

En las siguientes secciones se muestran los errores más comunes al conectarse con un controlador de cliente de Cassandra.

Está intentando conectarse a una tabla de Amazon Keyspaces con un controlador y el complemento SigV4, pero recibe un error AttributeError.

Si las credenciales no están correctamente configuradas, se produce el siguiente error.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.154:9142’: AttributeError(“‘NoneType’ object has no attribute ‘access_key’“)})

Para resolver este problema, verifique que esté pasando las credenciales asociadas a su usuario o rol de IAM al utilizar el complemento SigV4. El complemento SigV4 requiere las siguientes credenciales.

  • AWS_ACCESS_KEY_ID— Especifica una clave de AWS acceso asociada a un usuario o rol de IAM.

  • AWS_SECRET_ACCESS_KEY: especifica la clave secreta asociada a la clave de acceso. Se trata básicamente de la "contraseña" de la clave de acceso.

Para obtener más información sobre claves de acceso y el complemento SigV4, consulte Cómo crear y configurar AWS credenciales para Amazon Keyspaces.

Está intentando conectarse a una tabla de Amazon Keyspaces con un controlador, pero recibe un error PartialCredentialsError.

Si falta la AWS_SECRET_ACCESS_KEY, puede producirse el siguiente error.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.153:9142’: PartialCredentialsError(‘Partial credentials found in config-file, missing: aws_secret_access_key’)})

Para resolver este problema, compruebe que este pasando tanto el AWS_ACCESS_KEY_ID como la AWS_SECRET_ACCESS_KEY al utilizar el complemento SigV4. Para obtener más información sobre claves de acceso y el complemento SigV4, consulte Cómo crear y configurar AWS credenciales para Amazon Keyspaces.

Está intentando conectarse a una tabla de Amazon Keyspaces con un controlador, pero recibe un error Invalid signature.

Esto podría deberse a que ha utilizado credenciales incorrectas, lo que da lugar al siguiente error.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.134:9142’: AuthenticationFailed(‘Failed to authenticate to 44.234.22.134:9142: Error from server: code=0100 [Bad credentials] message=“Authentication failure: Invalid signature”’)})

Para resolver este problema, verifique que las credenciales que esté pasando estén asociadas con el usuario o rol de IAM que configuró para acceder a Amazon Keyspaces. Para obtener más información sobre claves de acceso y el complemento SigV4, consulte Cómo crear y configurar AWS credenciales para Amazon Keyspaces.

Mi punto de conexión de VPC no funciona correctamente

Está intentando conectarse a Amazon Keyspaces con puntos de conexión de VPC, pero recibe errores de asignación de tokens o experimenta un bajo rendimiento.

Este podría deberse a que la conexión del punto de conexión de VPC no está configurada correctamente.

Para resolver estos problemas, verifique los siguientes detalles de configuración. Para seguir un step-by-step tutorial sobre cómo configurar una conexión a través de puntos de enlace de la interfaz de VPC para Amazon Keyspaces, consulte. Tutorial: Conexión a Amazon Keyspaces mediante un punto de conexión de VPC de interfaz

  1. Confirme que la entidad de IAM utilizada para conectarse a Amazon Keyspaces tenga acceso de lectura/escritura a la tabla del usuario y acceso de lectura a las tablas del sistema, como se muestra en el siguiente ejemplo.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ] }
  2. Confirme que la entidad de IAM utilizada para conectarse a Amazon Keyspaces disponga de los permisos de lectura necesarios para acceder a la información del punto de conexión de VPC en su instancia de Amazon EC2, como se muestra en el siguiente ejemplo.

    { "Version":"2012-10-17", "Statement":[ { "Sid":"ListVPCEndpoints", "Effect":"Allow", "Action":[ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcEndpoints" ], "Resource":"*" } ] }
    nota

    Las políticas administradas AmazonKeyspacesReadOnlyAccess_v2 y AmazonKeyspacesFullAccess incluyen los permisos necesarios para permitir que Amazon Keyspaces acceda a la instancia de Amazon EC2 para leer la información sobre los puntos de conexión de VPC de interfaz disponibles.

    Para obtener más información sobre los puntos de conexión de VPC, consulte Uso de puntos de conexión de VPC de interfaz para Amazon Keyspaces.

  3. Confirme que la configuración SSL del controlador Java establezca la validación del nombre de host en false, como se muestra en este ejemplo.

    hostname-validation = false

    Para obtener más información sobre la configuración del controlador, consulte Paso 2: Configurar el controlador.

  4. Para confirmar que el punto de conexión de VPC se haya configurado correctamente, puede ejecutar la siguiente instrucción desde dentro de su VPC.

    nota

    No puede utilizar su entorno de desarrollo local o el editor CQL de Amazon Keyspaces para confirmar esta configuración, dado que utilizan un punto de conexión público.

    SELECT peer FROM system.peers;

    El resultado debería tener un aspecto similar al de este ejemplo y devolver entre 2 y 6 nodos con direcciones IP privadas, según la configuración de la VPC y AWS la región.

    peer --------------- 192.0.2.0.15 192.0.2.0.24 192.0.2.0.13 192.0.2.0.7 192.0.2.0.8 (5 rows)

No puedo conectarme utilizando cassandra-stress

Está intentando conectarse a Amazon Keyspaces con el comando cassandra-stress, pero recibe un error SSL context.

Esto ocurre al intentar conectarse a Amazon Keyspaces, pero no tiene correctamente configurado trustStore. Amazon Keyspaces requiere el uso de Seguridad de la capa de transporte (TLS) para ayudar a proteger las conexiones con los clientes.

En este caso, aparece el siguiente error.

Error creating the initializing the SSL Context

Para resolver este problema, siga las instrucciones para configurar un trustStore como se muestra en este tema: Antes de empezar.

Una vez configurado el trustStore, debería poder conectarse con el siguiente comando.

./cassandra-stress user profile=./profile.yaml n=100 "ops(insert=1,select=1)" cl=LOCAL_QUORUM -node "cassandra.eu-north-1.amazonaws.com" -port native=9142 -transport ssl-alg="PKIX" truststore="./cassandra_truststore.jks" truststore-password="trustStore_pw" -mode native cql3 user="user_name" password="password"

No puedo conectarme utilizando identidades de IAM

Está intentando conectarse a una tabla de Amazon Keyspaces utilizando una identidad de IAM, pero recibe un error Unauthorized.

Esto ocurre al intentar conectarse a una tabla de Amazon Keyspaces utilizando una identidad de IAM (por ejemplo, un usuario de IAM) sin antes implementar la política y conceder al usuario los permisos necesarios.

En este caso, aparece el siguiente error.

Connection error: ('Unable to connect to any servers', {'3.234.248.202': AuthenticationFailed('Failed to authenticate to 3.234.248.202: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::1234567890123:user/testuser has no permissions."',)})

Para resolver este problema, verifique los permisos del usuario de IAM. Para conectarse con un controlador estándar, un usuario debe tener al menos acceso SELECT a las tablas del sistema, dado que la mayoría de los controladores leen los espacios de claves/tablas del sistema al establecer la conexión.

Para ver ejemplos de políticas de IAM que concedan acceso a las tablas del sistema y del usuario de Amazon Keyspaces, consulte Acceso a las tablas de Amazon Keyspaces.

Para revisar la sección de solución de problemas específicos de IAM, consulte Solución de problemas de identidad y acceso a Amazon Keyspaces.

Estoy intentando importar datos con cqlsh y se pierde la conexión con mi tabla de Amazon Keyspaces

Está intentando cargar datos en Amazon Keyspaces con cqlsh, pero recibe errores de conexión.

La conexión a Amazon Keyspaces falla una vez que el cliente cqlsh recibe tres errores consecutivos de cualquier tipo procedentes del servidor. El cliente cqlsh falla con el siguiente mensaje.

Failed to import 1 rows: NoHostAvailable - , will retry later, attempt 3 of 100

Para resolver este error, debe asegurarse de que los datos que se vayan a importar coincidan con el esquema de la tabla en Amazon Keyspaces. Revise el archivo de importación en busca de errores de análisis sintáctico. Puede intentar utilizar una única fila de datos mediante una instrucción INSERT para aislar el error.

El cliente intentará restablecer la conexión de forma automática.