"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:9boto3/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
httpsonde o emulador local atendehttp. - 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
- Confirme o que está escutando no endpoint:
curl http://localhost:8000 # DynamoDB Local answers with a small response - Corrija a URL do endpoint — host, porta (
8000por padrão) e esquema (httppara o Local) corretos. - 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).
- No Docker, use o nome do serviço no compose ou
host.docker.internalem vez delocalhost(host.docker.internalresolve automaticamente no Docker Desktop; no Docker Engine em Linux, adicione--add-host host.docker.internal:host-gateway). - Falando com o AWS real? Remova por completo o override
--endpoint-urle 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
- Could not connect to DynamoDB Local (ECONNREFUSED) — o equivalente Node/JS de uma conexão local recusada.
- Missing region in config — nenhuma region, então o SDK não consegue construir um endpoint.
- Aprenda: Running DynamoDB Local · Connecting to DynamoDB Local / LocalStack
Fontes
- Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (porta padrão 8000, credenciais fictícias,
--endpoint-url) - DynamoDB local usage notes — AWS DynamoDB Developer Guide (definindo o endpoint local;
--endpoint-urlobrigatório em todo comando da CLI) - Error handling — Boto3 Developer Guide (
EndpointConnectionErrorcomo exceção do botocore no lado do cliente) docker run --add-host— Docker CLI reference (host.docker.internal/host-gatewaypara conexões contêiner-para-host)