"Could not connect to the endpoint URL": não foi possível conectar ao endpoint

TL;DR – o botocore não conseguiu abrir uma conexão com o endpoint do DynamoDB que ele resolveu. Quase sempre um --endpoint-url errado, DynamoDB Local não em execução, uma região errada ou com erro de digitação produzindo um nome de host inexistente ou nenhum caminho de rede (offline, VPC, grupo de segurança). Aponte para um endpoint alcançável e confirme se algo está escutando.

O que significa

botocore.exceptions.EndpointConnectionError: Could not connect to the
endpoint URL: "http://localhost:8000/"

# what the engine actually returns, reproduced against Amazon DynamoDB (live service, us-east-1):
connect ECONNREFUSED 127.0.0.1:9

boto3/botocore constrói a URL do endpoint do DynamoDB a partir da região (ou seu endpoint_url explícito) e então falha ao estabelecer uma conexão TCP/HTTP com ele. Ao contrário de um erro de autenticação ou validação, a solicitação nunca atingiu um serviço em execução. Ele aparece tanto em DynamoDB Local (emulador inativo/porta errada) quanto em AWS real (nome de host de região inválido ou rede bloqueada).

Por que isso acontece

  • DynamoDB Local não está rodando — você passou no --endpoint-url http://localhost:8000, mas o emulador não está ativo nessa porta (veja conexão recusada).
  • URL de endpoint errada — um erro de digitação, porta errada ou https onde o emulador local atende http.
  • Região incorreta — uma região com erro ortográfico (us-east-11) resolve para um nome de host que não existe, portanto a conexão não pode ser feita.
  • Sem caminho de rede — offline, ou tráfego do DynamoDB bloqueado por um endpoint de VPC, grupo de segurança ou ACL de rede.
  • Cross-container / cross-host — de dentro do Docker, localhost é o contêiner em si, não o host nem o serviço do DynamoDB Local.

Como corrigir

  1. Confirme o que está escutando no endpoint:
    curl http://localhost:8000    # DynamoDB Local answers with a small response
  2. Corrija a URL do endpoint — host, porta (8000 por padrão) e esquema (http para o Local) corretos.
  3. Confira a grafia da região para o AWS real e certifique-se de ter uma rota de rede (endpoint de VPC / regras de security group liberando o DynamoDB).
  4. No Docker, use o nome do serviço no compose ou host.docker.internal em vez de localhost (host.docker.internal resolve automaticamente no Docker Desktop; no Docker Engine em Linux, adicione --add-host host.docker.internal:host-gateway).
  5. Falando com o AWS real? Remova por completo o override --endpoint-url e deixe o botocore construir o endpoint regional correto.

Aponte o DynoTable para o Local

O DynoTable valida a conectividade com Testar conexão em cada perfil, em Configurações → Perfis (Conectar uma conta AWS). Para o DynamoDB Local, defina o endpoint http://localhost:8000 (ou :4566 para o LocalStack) com credenciais de espaço reservado — os mesmos valores de que a CLI precisa. Pressione ⌘P para trocar de perfil quando seu app usar uma porta diferente da do DynoTable. Guia: Conecte-se ao DynamoDB Local e LocalStack.

No AWS real, um erro de digitação na string de região produz um nome de host que não resolve — o mesmo formato de EndpointConnectionError de uma porta Local inalcançável. Confirme com aws sts get-caller-identity no perfil antes de depurar configurações específicas do DynamoDB.

Erros relacionados

Fontes

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.