Solução de problemas de conexão no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas de conexão no Amazon Keyspaces

Está tendo problemas para se conectar? Aqui estão alguns problemas comuns e como resolvê-los.

Erros na conexão com um endpoint do Amazon Keyspaces

Falhas e erros de conexão podem resultar em mensagens de erro diferentes. A seção a seguir aborda os cenários mais comuns.

Não consigo me conectar ao Amazon Keyspaces com o cqlsh

Você está tentando se conectar a um endpoint do Amazon Keyspaces usando cqlsh e a conexão falha com um Connection error.

Se você tentar se conectar a uma tabela do Amazon Keyspaces e o cqlsh não tiver sido configurado corretamente, a conexão falhará. A seção a seguir fornece exemplos dos problemas de configuração mais comuns que resultam em erros de conexão quando você tenta estabelecer uma conexão usando cqlsh.

nota

Se você estiver tentando se conectar ao Amazon Keyspaces a partir de uma VPC, serão necessárias permissões adicionais. Para configurar com êxito uma conexão usando endpoints da VPC, siga as etapas no Tutorial: Como conectar-se ao Amazon Keyspaces usando um endpoint da VPC de interface.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro de conexão timed out.

Esse pode ser o caso se você não tiver fornecido a porta correta, o que resultará no erro a seguir.

# 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 esse problema, verifique se você está usando a porta 9142 para a conexão.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro Name or service not known.

Esse pode ser o caso se você usou um endpoint com ortografia incorreta ou que não existe. No exemplo a seguir, o nome do endpoint está escrito incorretamente.

# 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 esse problema ao usar endpoints públicos para se conectar, selecione um endpoint disponível a partir de Endpoints de serviço para Amazon Keyspaces e verifique se o nome do endpoint não tem erros. Se você estiver usando endpoints da VPC para se conectar, verifique se as informações do endpoint da VPC estão corretas em sua configuração cqlsh.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro OperationTimedOut.

O Amazon Keyspaces exige que o SSL esteja habilitado para conexões para garantir uma segurança forte. O parâmetro SSL pode estar ausente se você receber o erro a seguir.

# 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 esse problema, adicione o seguinte sinalizador ao comando de conexão cqlsh.

--ssl

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh e recebe um erro SSL transport factory requires a valid certfile to be specified.

Nesse caso, o caminho para o certificado SSL/TLS está ausente, o que resulta no erro a seguir.

# 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 esse problema, adicione o caminho para o arquivo de certificado em seu computador.

certfile = path_to_file/sf-class2-root.crt

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro No such file or directory.

Esse pode ser o caso se o caminho para o arquivo de certificado em seu computador estiver errado, o que resulta no erro a seguir.

# 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 esse problema, verifique se o caminho para o arquivo de certificado em seu computador está correto.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro [X509] PEM lib.

Nesse caso, o caminho para o arquivo de certificado SSL/TLS sf-class2-root.crt é inválido, o que resulta no erro a seguir.

# 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 esse problema, baixe o certificado digital Starfield usando o comando a seguir. Salve sf-class2-root.crt localmente ou em seu diretório inicial.

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

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro SSL unknown.

Nesse caso, o caminho para o arquivo de certificado SSL/TLS sf-class2-root.crt é vazio, o que resulta no erro a seguir.

# 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 esse problema, baixe o certificado digital Starfield usando o comando a seguir. Salve sf-class2-root.crt localmente ou em seu diretório inicial.

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

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro SSL: CERTIFICATE_VERIFY_FAILED.

Esse pode ser o caso se o arquivo do certificado SSL/TLS não puder ser verificado, o que resulta no erro a seguir.

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 esse problema, baixe o certificado digital novamente usando o comando a seguir. Salve sf-class2-root.crt localmente ou em seu diretório inicial.

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

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você está recebendo um erroLast error: timed out.

Esse pode ser o caso se você não configurou uma regra de saída para o Amazon Keyspaces em seu grupo de segurança do Amazon EC2, o que resulta no erro a seguir.

# 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 se esse problema é causado pela configuração da instância do Amazon EC2 ou nãocqlsh, você pode tentar se conectar ao seu keyspace usando o AWS CLI, por exemplo, com o comando a seguir.

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

Se esse comando também atingir o tempo limite, a instância do Amazon EC2 não está configurada corretamente.

Para confirmar que você tem permissões suficientes para acessar o Amazon Keyspaces, você pode usar o AWS CloudShell para se conectar. cqlsh Se essas conexões forem estabelecidas, você precisará configurar a instância do Amazon EC2.

Para resolver esse problema, confirme se sua instância do Amazon EC2 tem uma regra de saída que permite tráfego para o Amazon Keyspaces. Se não for esse o caso, você precisa criar um novo grupo de segurança para a instância do EC2 e adicionar uma regra que permita tráfego de saída para os recursos do Amazon Keyspaces. Para atualizar a regra de saída para permitir o tráfego para o Amazon Keyspaces, escolha CQLSH/CASSANDRA no menu suspenso Tipo.

Depois de criar o novo grupo de segurança com a regra de tráfego de saída, você precisa adicioná-lo à instância. Selecione a instância e, em seguida, escolha Ações, depois Segurança e, em seguida, Alterar grupos de segurança. Adicione o novo grupo de segurança com a regra de saída, mas certifique-se de que o grupo padrão também permaneça disponível.

Para obter mais informações sobre como visualizar e editar regras de saída do EC2, consulte Adicionar regras a um grupo de segurança no Guia do usuário do Amazon EC2.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro Unauthorized.

Esse pode ser o caso se você não tiver permissões do Amazon Keyspaces na política de usuário do IAM, o que resulta no erro a seguir.

# 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 esse problema, verifique se o usuário do IAM testuser-at-12345678910 tem permissões para acessar o Amazon Keyspaces. Para obter exemplos de políticas do IAM que concedem acesso ao Amazon Keyspaces, consulte Exemplos de políticas baseadas em identidade do Amazon Keyspaces.

Para obter orientações de solução de problemas específicas para o acesso ao IAM, consulte Solução de problemas de identidade e acesso do Amazon Keyspaces.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas recebe um erro Bad credentials.

Esse pode ser o caso se o nome de usuário ou a senha estiverem incorretos, o que resultará no erro a seguir.

# 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 esse problema, verifique se o NOME DE USUÁRIO e a SENHA em seu código correspondem ao nome de usuário e à senha que você obteve ao gerar credenciais específicas do serviço.

Importante

Se você continuar vendo erros ao tentar se conectar com cqlsh, execute novamente o comando com a opção --debug e inclua a saída detalhada ao entrar em contato com AWS Support.

Não consigo me conectar ao Amazon Keyspaces usando os drivers do cliente Cassandra

As seções a seguir mostram os erros mais comuns ao se conectar a um driver do cliente Cassandra.

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando o driver DataStax Java, mas recebe um NodeUnavailableException erro.

Se a conexão na qual a solicitação foi tentada for interrompida, isso resultará no seguinte erro.

[com.datastax.oss.driver.api.core.NodeUnavailableException: No connection was available to Node(endPoint=vpce-22ff22f2f22222fff-aa1bb234.cassandra.us-west-2.vpce.amazonaws.com/11.1.1111.222:9142, hostId=1a23456b-c77d-8888-9d99-146cb22d6ef6, hashCode=123ca4567)]

Para resolver esse problema, encontre o valor do batimento cardíaco e diminua-o para 30 segundos, se for maior.

advanced.heartbeat.interval = 30 seconds

Em seguida, procure o tempo limite associado e verifique se o valor está definido para pelo menos 5 segundos.

advanced.connection.init-query-timeout = 5 seconds

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver e o complemento SigV4, mas recebe um erro AttributeError.

Se as credenciais não estiverem configuradas corretamente, isso resultará no erro a seguir.

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

Para resolver esse problema, verifique se você está passando as credenciais associadas ao seu usuário ou perfil do IAM ao usar o complemento SigV4. O complemento SigV4 exige as seguintes credenciais.

  • AWS_ACCESS_KEY_ID— Especifica uma chave de AWS acesso associada a um usuário ou função do IAM.

  • AWS_SECRET_ACCESS_KEY: especifica a chave secreta associada à chave de acesso. Essencialmente, essa é a “senha” para a chave de acesso.

Para saber mais sobre as chaves de acesso e o complemento SigV4, consulte Como criar e configurar AWS credenciais para o Amazon Keyspaces.

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver, mas recebe um erro PartialCredentialsError.

Se o AWS_SECRET_ACCESS_KEY estiver ausente, isso pode resultar no seguinte erro.

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 esse problema, verifique se você está transmitindo o AWS_ACCESS_KEY_ID e o AWS_SECRET_ACCESS_KEY ao usar o complemento SigV4. Para saber mais sobre as chaves de acesso e o complemento SigV4, consulte Como criar e configurar AWS credenciais para o Amazon Keyspaces.

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver, mas recebe um erro Invalid signature.

Esse pode ser o caso se você usou credenciais erradas, o que resultará no seguinte erro.

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 esse problema, verifique se as credenciais que você está passando estão associadas ao usuário ou perfil do IAM configurados para acessar o Amazon Keyspaces. Para saber mais sobre as chaves de acesso e o complemento SigV4, consulte Como criar e configurar AWS credenciais para o Amazon Keyspaces.

Minha conexão de endpoint da VPC não funciona corretamente

Você está tentando se conectar ao Amazon Keyspaces usando endpoints da VPC, mas está recebendo erros no mapa de tokens ou está tendo baixo throughput.

Esse pode ser o caso se a conexão do endpoint da VPC não estiver configurada corretamente.

Para resolver esses problemas, verifique os detalhes de configuração a seguir. Para seguir um step-by-step tutorial para aprender como configurar uma conexão por meio de endpoints VPC de interface para Amazon Keyspaces, consulte. Tutorial: Como conectar-se ao Amazon Keyspaces usando um endpoint da VPC de interface

  1. Confirme se a entidade IAM usada para se conectar ao Amazon Keyspaces tem acesso de leitura/gravação à tabela de usuários e acesso de leitura às tabelas do sistema, conforme mostrado no exemplo a seguir.

    { "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 se a entidade IAM usada para se conectar ao Amazon Keyspaces tem as permissões de leitura necessárias para acessar as informações do endpoint da VPC na sua instância do Amazon EC2, conforme mostrado no exemplo a seguir.

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

    As políticas gerenciadas AmazonKeyspacesReadOnlyAccess_v2 e AmazonKeyspacesFullAccess incluem as permissões necessárias para permitir que o Amazon Keyspaces acesse a instância do Amazon EC2 para ler informações sobre os endpoints da VPC de interface disponíveis.

    Para saber mais sobre endpoints da VPC, consulte Como usar o endpoint da VPC para o Amazon Keyspaces

  3. Confirme se a configuração SSL do driver Java define a validação do nome do host como falsa, conforme mostrado neste exemplo.

    hostname-validation = false

    Para obter mais informações sobre a configuração do driver, consulte Etapa 2: configurar o driver.

  4. Para confirmar se o endpoint da VPC foi configurado corretamente, você pode executar a instrução a seguir de dentro da sua VPC.

    nota

    Você não pode usar seu ambiente de desenvolvedor local ou o editor de CQL do Amazon Keyspaces para confirmar essa configuração, porque eles usam o endpoint público.

    SELECT peer FROM system.peers;

    A saída deve ser semelhante a este exemplo e retornar entre 2 a 6 nós com endereços IP privados, dependendo da configuração da VPC e AWS da região.

    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)

Não consigo me conectar usando cassandra-stress

Você está tentando se conectar ao Amazon Keyspaces usando o comando cassandra-stress, mas está recebendo um erro SSL context.

Isso acontece se você tentar se conectar ao Amazon Keyspaces, mas não tiver a configuração correta do trustStore. O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexões com os clientes.

Nesse caso, você verá o erro a seguir.

Error creating the initializing the SSL Context

Para resolver esse problema, siga as instruções para configurar um trustStore conforme mostrado neste tópico Antes de começar.

Depois que o trustStore estiver configurado, você deverá ser capaz de se conectar com o comando a seguir.

./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"

Não consigo me conectar usando identidades IAM

Você está tentando se conectar ao Amazon Keyspaces usando uma identidade IAM, mas está recebendo um erro Unauthorized.

Isso acontece se você tentar se conectar a uma tabela do Amazon Keyspaces usando uma identidade do IAM (por exemplo, um usuário do IAM) sem implementar a política e fornecer primeiro ao usuário as permissões necessárias.

Nesse caso, você verá o erro a seguir.

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 esse problema, verifique as permissões do usuário do IAM. Para se conectar com um driver padrão, um usuário deve ter pelo menos acesso SELECT às tabelas do sistema, porque a maioria dos drivers lê os espaços de chaves/as tabelas do sistema quando estabelecem a conexão.

Para obter exemplos de políticas do IAM que concedem acesso ao sistema Amazon Keyspaces e às tabelas de usuários, consulte Como acessar as tabelas do Amazon Keyspaces.

Para revisar a seção de solução de problemas específica do IAM, consulte Solução de problemas de identidade e acesso do Amazon Keyspaces.

Estou tentando importar dados com cqlsh e a conexão com minha tabela Amazon Keyspaces foi perdida

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas está recebendo erros de conexão.

A conexão com o Amazon Keyspaces falha depois que o cliente cqlsh recebe três erros consecutivos de qualquer tipo do servidor. O cliente cqlsh falha com a seguinte mensagem.

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

Para resolver esse erro, você precisa garantir que os dados a serem importados correspondam ao esquema da tabela no Amazon Keyspaces. Verifique se há erros de análise no arquivo de importação. Você pode tentar usar uma única linha de dados usando uma instrução INSERT para isolar o erro.

O cliente tenta automaticamente restabelecer a conexão.