Ir para o conteúdo

Como soluciono um erro de conexão ao executar os comandos “cp” ou “sync” no meu bucket do Amazon S3?

6 minuto de leitura
0

Quero executar os comandos “cp” ou "sync" da AWS Command Line Interface (AWS CLI) no meu bucket do Amazon Simple Storage Service (Amazon S3). No entanto, recebo um erro.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para executar os comandos cp ou sync usando a AWS CLI, sua máquina deve se conectar aos endpoints do Amazon S3 corretos. Caso contrário, você receberá um erro com uma mensagem informando que o serviço não consegue se conectar ao URL do endpoint ou que a conexão atingiu o tempo limite. Com base no erro recebido, execute as seguintes ações de solução de problemas.

Erro "Could not connect to the endpoint URL"

Confirmar se a região da e o endpoint do Amazon S3 estão corretos

Quando você executa um comando na AWS CLI, ele envia solicitações de API para o endpoint padrão do Amazon S3 para a região da AWS. Quando você especifica uma região, a AWS CLI envia uma solicitação de API para um endpoint do Amazon S3 específico da região. Em seguida, a AWS CLI redireciona a solicitação para o endpoint regional do Amazon S3 do bucket.

É possível receber o erro "Could not connect to the endpoint URL" se houver um erro de digitação ou erro na região ou no endpoint especificado. Por exemplo, o comando a seguir resulta no erro porque há um e adicional no nome do endpoint:

aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --endpoint-url https://s3-acceleratee.amazonaws.com

Antes de executar os comandos cp ou sync, confirme se a região associada e o endpoint do Amazon S3 estão corretos. Use a sinalização --debug ao executar o comando da AWS CLI para identificar o endpoint que a AWS CLI usa. Exemplo de comando:

aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --debug

Observação: se você usa a Aceleração de Transferências do Amazon S3, ative-o para o bucket. Use o endpoint bucket-name.s3-accelerate.amazonaws.com. Ou use o endpoint de pilha dupla bucket-name.s3-accelerate.dualstack.amazonaws.com para se conectar ao bucket por IPv6. Substitua bucket-name pelo nome do seu bucket.

Verificar se o DNS pode ser resolvido para os endpoints do Amazon S3

Para confirmar que o DNS pode se conectar aos endpoints do Amazon S3, use uma ferramenta de consulta ao DNS, como nslookup, dig ou ping. Exemplos de comandos:

nslookup s3.amazonaws.com
dig s3.amazonaws.com
ping s3.amazonaws.com

Se o DNS não conseguir se conectar aos endpoints do Amazon S3, solucione o problema da sua configuração do DNS. Se você usa o Amazon Route 53 como seu provedor de DNS, consulte Troubleshooting Amazon Route 53 (Solução de problemas do Amazon Route 53).

Erro "Connect timeout on endpoint URL"

Verificar se a rede pode se conectar aos endpoints do Amazon S3

Confirme se o firewall da sua rede permite tráfego para os endpoints do Amazon S3 na porta que você usa para o tráfego do Amazon S3.

Por exemplo, o comando telnet a seguir testa a conexão com o endpoint do Amazon S3 ap-southeast-2 na porta 443:

telnet s3.ap-southeast-2.amazonaws.com 443

Para capturar e analisar pacotes de rede e verificar se sua máquina pode concluir o handshake TCP com o endpoint Amazon S3, execute o seguinte comando tcpdump:

sudo tcpdump -i eth0 'host s3.ap-southeast-2.amazonaws.com and port 443' -s0 -w samplecapture.pcap

Observação: substitua eth0 pela sua interface de rede elástica, ap-southeast-2 pela região do endpoint do Amazon S3 e 443 pela sua porta. A sinalização -s0 captura o pacote completo e -w samplecapture.pcap grava a captura em um arquivo. É possível usar uma ferramenta como o Wireshark para analisar as informações no arquivo.

Procure o handshake tridirecional TCP (SYN, SYN-ACK, ACK) para confirmar a conectividade. Se você vê somente pacotes SYN sem respostas SYN-ACK, então há um problema de firewall ou roteamento.

Para detectar problemas de roteamento ou perda de pacotes ao longo do caminho até o endpoint do Amazon S3, execute o seguinte comando mtr:

mtr -n -T -c 200 s3.ap-southeast-2.amazonaws.com -P 443 --report

Observação: substitua ap-southeast-2 pela sua região e 443 pela sua porta. A sinalização -n desativa a resolução de DNS para acelerar o teste e a sinalização -T usa pacotes TCP que podem ser mais precisos do que o Protocolo de mensagens de controle da internet (ICMP). O comando anterior executa 200 ciclos do teste para melhorar a precisão estatística e gera um relatório.

No Windows, é possível usar WinMTR para testes de roteamento semelhantes. Procure pacotes de alta latência, descarte de pacotes ou loops de roteamento que possam afetar a conectividade com o endpoint do Amazon S3.

Para uma instância do Amazon EC2, verificar a configuração da VPC

Se você vê o erro "Connection timeout" em uma instância do Amazon Elastic Compute Cloud (Amazon EC2), verifique a configuração da nuvem privada virtual (VPC).

Se a instância do EC2 estiver em uma sub-rede pública, verifique as seguintes configurações:

Se a instância do EC2 estiver em uma sub-rede privada, verifique as seguintes configurações:

  • Certifique-se de associar um gateway NAT à tabela de rotas da sub-rede.
  • Se você usa um endpoint da VPC para o Amazon S3, confirme se o arquivo de configuração da AWS CLI possui a região correta.
    Observação: os endpoints da VPC para Amazon S3 são específicos da região. Por exemplo, você executa sync com --region us-west-1, mas o endpoint da VPC está em uma região diferente. Como resultado, você recebe o erro "Could not connect to the endpoint URL".

Ao usar o AWS PrivateLink para acessar o Amazon S3 em sua VPC, use o Reachability Analyzer. Essa ferramenta ajuda a identificar configurações incorretas em grupos de segurança, ACLs de rede ou tabelas de rotas que podem bloquear a conectividade. Por exemplo, crie uma análise do Reachability Analyzer para verificar o caminho entre sua instância e o endpoint da interface.

AWS OFICIALAtualizada há um ano