"Could not connect to the endpoint URL" (DynamoDB): impossibile connettersi all'URL dell'endpoint
TL;DR: botocore non è riuscito ad aprire una connessione all'endpoint DynamoDB risolto. Quasi sempre un --endpoint-url sbagliato, DynamoDB Locale non in esecuzione, una regione errata/errore di battitura che produce un nome host inesistente o nessun percorso di rete (offline, VPC, gruppo di sicurezza). Punta verso un endpoint raggiungibile e conferma che qualcosa è in ascolto.
Cosa 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 crea l'URL dell'endpoint DynamoDB dalla regione (o il tuo endpoint_url esplicito) e quindi non riesce a stabilire una connessione TCP/HTTP ad esso. A differenza di un errore di autenticazione o di convalida, la richiesta non ha mai raggiunto un servizio in esecuzione. Si presenta sia contro DynamoDB Local (emulatore inattivo/porta sbagliata) che real AWS (nome host della regione errato o rete bloccata).
Perché succede
- DynamoDB Local non è in esecuzione: hai passato
--endpoint-url http://localhost:8000ma l'emulatore non è attivo su quella porta (vedi connessione rifiutata). - URL endpoint errato: un errore di battitura, una porta errata o "https" dove l'emulatore locale serve "http".
- Bad regione — una regione con errori di ortografia (
us-east-11) si risolve in un nome host che non esiste, quindi la connessione non può essere stabilita. - Nessun percorso di rete: traffico offline o DynamoDB bloccato da un endpoint VPC, un gruppo di sicurezza o un ACL di rete.
- Cross-container/cross-host — dall'interno di Docker,
localhostè il contenitore stesso, non l'host o il servizio locale DynamoDB.
Come risolverlo
- Conferma cosa è in ascolto sull'endpoint:
curl http://localhost:8000 # DynamoDB Local answers with a small response - Correggi l'URL dell'endpoint: host, porta (
8000per impostazione predefinita) e schema corretti (httpper Locale). - Controlla l'ortografia della regione per vero AWS e assicurati di disporre di un percorso di rete (le regole dell'endpoint VPC/del gruppo di sicurezza consentono DynamoDB).
- In Docker, utilizza il nome del servizio di composizione o
host.docker.internalinvece dilocalhost(host.docker.internalsi risolve automaticamente in Docker Desktop; su Linux Docker Engine aggiungi--add-host host.docker.internal:host-gateway). - Parli con il reale AWS? Elimina completamente l'override
--endpoint-urle lascia che botocore crei l'endpoint regionale corretto.
Punta DynoTable a Local
DynoTable convalida la connettività con Test connessione su ciascun profilo in
Impostazioni → Profili (Connetti un account AWS). Per
DynamoDB Locale, imposta l'endpoint http://localhost:8000 (o :4566 per LocalStack)
con credenziali segnaposto: gli stessi valori necessari alla CLI. Premi ⌘P
per cambiare profilo quando la tua app utilizza una porta diversa da DynoTable. Guida:
Connetti a DynamoDB Locale e LocalStack.
Rispetto al reale AWS, un errore di battitura nella stringa della regione produce un nome host che non lo fa risolvere: la stessa forma "EndpointConnectionError" di una porta locale irraggiungibile. Conferma con "aws sts get-caller-identity" sul profilo prima del debug DynamoDB impostazioni specifiche.
Errori correlati
- Impossibile connettersi a DynamoDB Locale (ECONNREFUSED) — l'equivalente Nodo/JS di una connessione locale rifiutata.
- Regione mancante nella configurazione: nessuna regione, quindi l'SDK non può affatto creare un endpoint.
- Impara: Esecuzione DynamoDB Local · Connessione a DynamoDB Local / LocalStack
Fonti
- Distribuzione DynamoDB localmente sul computer — AWS DynamoDB Guida per gli sviluppatori (porta predefinita 8000, credenziali fittizie,
--endpoint-url) - DynamoDB note sull'utilizzo locale — AWS DynamoDB Guida per gli sviluppatori (impostazione dell'endpoint locale;
--endpoint-urlrichiesto su ogni comando CLI) - Gestione degli errori - Guida per sviluppatori Boto3 ("EndpointConnectionError" come eccezione botocore lato client)
docker run --add-host— Riferimento CLI Docker (host.docker.internal/host-gatewayper connessioni da contenitore a host)