"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:9

boto3/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:8000 ma 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

  1. Conferma cosa è in ascolto sull'endpoint:
    curl http://localhost:8000    # DynamoDB Local answers with a small response
  2. Correggi l'URL dell'endpoint: host, porta (8000 per impostazione predefinita) e schema corretti (http per Locale).
  3. 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).
  4. In Docker, utilizza il nome del servizio di composizione o host.docker.internal invece di localhost (host.docker.internal si risolve automaticamente in Docker Desktop; su Linux Docker Engine aggiungi --add-host host.docker.internal:host-gateway).
  5. Parli con il reale AWS? Elimina completamente l'override --endpoint-url e 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

Fonti

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.