Risoluzione dei problemi di connessione in Amazon Keyspaces - Amazon Keyspaces (per Apache Cassandra)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di connessione in Amazon Keyspaces

Problemi di connessione? Ecco alcuni problemi comuni e come risolverli.

Errori di connessione a un endpoint Amazon Keyspaces

Le connessioni non riuscite e gli errori di connessione possono generare diversi messaggi di errore. La sezione seguente illustra gli scenari più comuni.

Non riesco a connettermi ad Amazon Keyspaces con cqlsh

Stai tentando di connetterti a un endpoint Amazon Keyspaces utilizzando cqlsh e la connessione fallisce con un. Connection error

Se tenti di connetterti a una tabella Amazon Keyspaces e cqlsh non è stato configurato correttamente, la connessione non riesce. La sezione seguente fornisce esempi dei problemi di configurazione più comuni che provocano errori di connessione quando si tenta di stabilire una connessione utilizzando cqlsh.

Nota

Se stai tentando di connetterti ad Amazon Keyspaces da un VPC, sono necessarie autorizzazioni aggiuntive. Per configurare correttamente una connessione utilizzando gli endpoint VPC, segui i passaggi indicati in. Tutorial: Connessione ad Amazon Keyspaces utilizzando un endpoint VPC di interfaccia

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore di connessione. timed out

Questo potrebbe accadere se non hai fornito la porta corretta, con il risultato del seguente errore.

# 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")})

Per risolvere il problema, verifica di utilizzare la porta 9142 per la connessione.

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. Name or service not known

Questo potrebbe accadere se hai utilizzato un endpoint con errori di ortografia o inesistente. Nell'esempio seguente, il nome dell'endpoint è scritto in modo errato.

# 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

Per risolvere questo problema quando utilizzi endpoint pubblici per connetterti, seleziona un endpoint disponibile e verifica che il nome dell'endpoint non contenga errori. Endpoint di servizio per Amazon Keyspaces Se utilizzi gli endpoint VPC per la connessione, verifica che le informazioni sull'endpoint VPC siano corrette nella configurazione cqlsh.

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. OperationTimedOut

Amazon Keyspaces richiede che SSL sia abilitato per le connessioni per garantire una maggiore sicurezza. Il parametro SSL potrebbe mancare se ricevi il seguente errore.

# 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',)}) #

Per risolvere questo problema, aggiungi il seguente flag al comando cqlsh connection.

--ssl

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh e ricevi un errore. SSL transport factory requires a valid certfile to be specified

In questo caso, manca il percorso del certificato SSL/TLS, il che genera il seguente errore.

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

Per risolvere questo problema, aggiungi il percorso al certfile sul tuo computer.

certfile = path_to_file/sf-class2-root.crt

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. No such file or directory

Questo potrebbe accadere se il percorso del file del certificato sul tuo computer è errato, il che genera il seguente errore.

# 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')}) #

Per risolvere questo problema, verifica che il percorso del certfile sul tuo computer sia corretto.

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. [X509] PEM lib

Questo potrebbe accadere se il file del certificato SSL/TLS non sf-class2-root.crt è valido, con il risultato del seguente errore.

# 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)")}) #

Per risolvere questo problema, scaricate il certificato digitale Starfield utilizzando il seguente comando. Salva sf-class2-root.crt localmente o nella tua home directory.

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

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore SSL. unknown

Questo potrebbe accadere se il file del certificato SSL/TLS sf-class2-root.crt è vuoto, il che genera il seguente errore.

# 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)")}) #

Per risolvere questo problema, scaricate il certificato digitale Starfield utilizzando il seguente comando. Salva sf-class2-root.crt localmente o nella tua home directory.

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

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. SSL: CERTIFICATE_VERIFY_FAILED

Questo potrebbe accadere se non è possibile verificare il file del certificato SSL/TLS, con il risultato del seguente errore.

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)")})

Per risolvere questo problema, scarica nuovamente il file del certificato utilizzando il comando seguente. Salva sf-class2-root.crt localmente o nella tua home directory.

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

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. Last error: timed out

Questo potrebbe verificarsi se non hai configurato una regola in uscita per Amazon Keyspaces nel tuo gruppo di sicurezza Amazon EC2, con il risultato del seguente errore.

# 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")}) #

Per confermare che questo problema è causato dalla configurazione dell'istanza Amazon EC2 e noncqlsh, puoi provare a connetterti al tuo keyspace utilizzando, ad esempio AWS CLI, il seguente comando.

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

Se anche questo comando scade, l'istanza Amazon EC2 non è configurata correttamente.

Per confermare di disporre di autorizzazioni sufficienti per accedere ad Amazon Keyspaces, puoi utilizzare AWS CloudShell il comando per connetterti con. cqlsh Se tali connessioni vengono stabilite, è necessario configurare l'istanza Amazon EC2.

Per risolvere questo problema, verifica che la tua istanza Amazon EC2 disponga di una regola in uscita che consenta il traffico verso Amazon Keyspaces. In caso contrario, devi creare un nuovo gruppo di sicurezza per l'istanza EC2 e aggiungere una regola che consenta il traffico in uscita verso le risorse di Amazon Keyspaces. Per aggiornare la regola in uscita per consentire il traffico verso Amazon Keyspaces, scegli CQLSH/CASSANDRA dal menu a discesa Tipo.

Dopo aver creato il nuovo gruppo di sicurezza con la regola del traffico in uscita, devi aggiungerlo all'istanza. Seleziona l'istanza, quindi scegli Azioni, Sicurezza e quindi Modifica gruppi di sicurezza. Aggiungi il nuovo gruppo di sicurezza con la regola in uscita, ma assicurati che rimanga disponibile anche il gruppo predefinito.

Per ulteriori informazioni su come visualizzare e modificare le regole in uscita EC2, consulta Add rules to a security group nella Amazon EC2 User Guide for Linux Instances.

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. Unauthorized

Questo potrebbe verificarsi se non disponi delle autorizzazioni Amazon Keyspaces nella policy utente di IAM, il che genera il seguente errore.

# 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."',)}) #

Per risolvere questo problema, assicurati che l'utente IAM testuser-at-12345678910 disponga delle autorizzazioni per accedere ad Amazon Keyspaces. Per esempi di policy IAM che concedono l'accesso ad Amazon Keyspaces, consulta. Esempi di policy basate sull'identità di Amazon Keyspaces

Per una guida alla risoluzione dei problemi specifica per l'accesso IAM, consultaRisoluzione dei problemi relativi all'identità e all'accesso ad Amazon Keyspaces.

Stai tentando di connetterti ad Amazon Keyspaces usando cqlsh, ma ricevi un errore. Bad credentials

Questo potrebbe accadere se il nome utente o la password sono errati, con il risultato del seguente errore.

# 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"',)}) #

Per risolvere il problema, verifica che il NOME UTENTE e la PASSWORD contenuti nel codice corrispondano al nome utente e alla password ottenuti durante la generazione delle credenziali specifiche del servizio.

Importante

Se continui a riscontrare errori durante il tentativo di connessione con cqlsh, esegui nuovamente il comando con l'--debugopzione e includi l'output dettagliato durante il contatto. AWS Support

Non riesco a connettermi ad Amazon Keyspaces utilizzando un driver client Cassandra

Le sezioni seguenti mostrano gli errori più comuni durante la connessione con un driver client Cassandra.

Stai tentando di connetterti a una tabella Amazon Keyspaces utilizzando un driver e il plug-in SigV4, ma ricevi un errore. AttributeError

Se le credenziali non sono configurate correttamente, si verifica il seguente errore.

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

Per risolvere questo problema, verifica di passare le credenziali associate al tuo utente o ruolo IAM quando usi il plug-in SigV4. Il plugin SigV4 richiede le seguenti credenziali.

  • AWS_ACCESS_KEY_ID— Specifica una chiave di AWS accesso associata a un utente o ruolo IAM.

  • AWS_SECRET_ACCESS_KEY— Speciifica la chiave segreta associata alla chiave di accesso. Si tratta essenzialmente della "password" per la chiave di accesso.

Per ulteriori informazioni sulle chiavi di accesso e sul plug-in SigV4, consulta. Come creare e configurare AWS credenziali per Amazon Keyspaces

Stai tentando di connetterti a una tabella Amazon Keyspaces utilizzando un driver, ma ricevi un PartialCredentialsError errore.

Se AWS_SECRET_ACCESS_KEY manca, può verificarsi il seguente errore.

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’)})

Per risolvere questo problema, verifica di aver passato AWS_ACCESS_KEY_ID sia il che AWS_SECRET_ACCESS_KEY quando usi il plugin SigV4. Per ulteriori informazioni sulle chiavi di accesso e sul plug-in SigV4, consulta. Come creare e configurare AWS credenziali per Amazon Keyspaces

Stai tentando di connetterti a una tabella Amazon Keyspaces utilizzando un driver, ma ricevi un Invalid signature errore.

Questo potrebbe accadere se hai utilizzato credenziali errate, con il risultato del seguente errore.

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”’)})

Per risolvere questo problema, verifica che le credenziali che stai trasmettendo siano associate all'utente o al ruolo IAM che hai configurato per accedere ad Amazon Keyspaces. Per ulteriori informazioni sulle chiavi di accesso e sul plug-in SigV4, consulta. Come creare e configurare AWS credenziali per Amazon Keyspaces

La mia connessione endpoint VPC non funziona correttamente

Stai tentando di connetterti ad Amazon Keyspaces utilizzando endpoint VPC, ma ricevi errori nella mappa dei token o stai riscontrando un throughput ridotto.

Questo potrebbe accadere se la connessione dell'endpoint VPC non è configurata correttamente.

Per risolvere questi problemi, verifica i seguenti dettagli di configurazione. Per seguire un step-by-step tutorial su come configurare una connessione tramite endpoint VPC di interfaccia per Amazon Keyspaces, consulta. Tutorial: Connessione ad Amazon Keyspaces utilizzando un endpoint VPC di interfaccia

  1. Verifica che l'entità IAM utilizzata per connettersi ad Amazon Keyspaces disponga dell'accesso in lettura/scrittura alla tabella utente e dell'accesso in lettura alle tabelle di sistema, come illustrato nell'esempio seguente.

    { "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. Verifica che l'entità IAM utilizzata per connettersi ad Amazon Keyspaces disponga delle autorizzazioni di lettura necessarie per accedere alle informazioni sugli endpoint VPC sulla tua istanza Amazon EC2, come mostrato nell'esempio seguente.

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

    Le policy gestite AmazonKeyspacesFullAccess includono AmazonKeyspacesReadOnlyAccess_v2 le autorizzazioni necessarie per consentire ad Amazon Keyspaces di accedere all'istanza Amazon EC2 per leggere informazioni sugli endpoint VPC di interfaccia disponibili.

    Per ulteriori informazioni sugli endpoint VPC, consulta Utilizzo degli endpoint VPC dell'interfaccia per Amazon Keyspaces

  3. Verifica che la configurazione SSL del driver Java imposti la convalida del nome host su false, come mostrato in questo esempio.

    hostname-validation = false

    Per ulteriori informazioni sulla configurazione dei driver, vedere. Fase 2: Configurare il driver

  4. Per confermare che l'endpoint VPC è stato configurato correttamente, puoi eseguire la seguente istruzione dall'interno del tuo VPC.

    Nota

    Non puoi utilizzare l'ambiente di sviluppo locale o l'editor CQL di Amazon Keyspaces per confermare questa configurazione, perché utilizzano l'endpoint pubblico.

    SELECT peer FROM system.peers;

    L'output dovrebbe essere simile a questo esempio e restituire da 2 a 6 nodi con indirizzi IP privati, a seconda della configurazione e AWS della regione del VPC.

    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)

Non riesco a connettermi tramite cassandra-stress

Stai tentando di connetterti ad Amazon Keyspaces usando il cassandra-stress comando, ma ricevi un SSL context errore.

Ciò accade se provi a connetterti ad Amazon Keyspaces, ma non hai configurato correttamente il TrustStore. Amazon Keyspaces richiede l'uso di Transport Layer Security (TLS) per proteggere le connessioni con i client.

In questo caso, viene visualizzato il seguente errore.

Error creating the initializing the SSL Context

Per risolvere questo problema, segui le istruzioni per configurare un TrustStore, come illustrato in questo argomentoPrima di iniziare.

Una volta configurato il TrustStore, dovresti essere in grado di connetterti con il seguente 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"

Non riesco a connettermi utilizzando le identità IAM

Stai tentando di connetterti a una tabella Amazon Keyspaces utilizzando un'identità IAM, ma ricevi un Unauthorized errore.

Ciò accade se tenti di connetterti a una tabella Amazon Keyspaces utilizzando un'identità IAM (ad esempio, un utente IAM) senza implementare la policy e fornire prima all'utente le autorizzazioni richieste.

In questo caso, viene visualizzato il seguente errore.

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."',)})

Per risolvere questo problema, verifica le autorizzazioni dell'utente IAM. Per connettersi con un driver standard, un utente deve avere almeno SELECT accesso alle tabelle di sistema, poiché la maggior parte dei driver legge gli spazi chiave/le tabelle di sistema quando stabilisce la connessione.

Ad esempio, le politiche IAM che concedono l'accesso al sistema Amazon Keyspaces e alle tabelle utente, vedi. Accesso alle tabelle Amazon Keyspaces

Per consultare la sezione sulla risoluzione dei problemi specifica di IAM, consultaRisoluzione dei problemi relativi all'identità e all'accesso ad Amazon Keyspaces.

Sto cercando di importare dati con cqlsh e la connessione alla mia tabella Amazon Keyspaces si interrompe

Stai cercando di caricare dati su Amazon Keyspaces con cqlsh, ma ricevi errori di connessione.

La connessione ad Amazon Keyspaces fallisce dopo che il client cqlsh riceve tre errori consecutivi di qualsiasi tipo dal server. Il client cqlsh fallisce e viene visualizzato il seguente messaggio.

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

Per risolvere questo errore, devi assicurarti che i dati da importare corrispondano allo schema della tabella in Amazon Keyspaces. Controlla il file di importazione per verificare eventuali errori di analisi. Puoi provare a utilizzare una singola riga di dati utilizzando un'istruzione INSERT per isolare l'errore.

Il client tenta automaticamente di ristabilire la connessione.