Could not connect to the endpoint URL (DynamoDB)
TL;DR — botocore konnte keine Verbindung zu dem DynamoDB-Endpunkt aufbauen, den es aufgelöst hat. Fast immer eine falsche --endpoint-url, ein nicht laufendes DynamoDB Local, eine vertippte Region, die einen nicht existierenden Hostnamen ergibt, oder gar kein Netzwerkpfad (offline, VPC, Security Group). Zeig auf einen erreichbaren Endpunkt und prüfe, dass dort etwas lauscht.
Was es bedeutet
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 baut die DynamoDB-Endpoint-URL aus der Region (oder deiner expliziten endpoint_url) und scheitert dann daran, eine TCP-/HTTP-Verbindung dorthin aufzubauen. Anders als bei einem Auth- oder Validierungsfehler hat die Anfrage nie einen laufenden Service erreicht. Sie tritt sowohl gegen DynamoDB Local (Emulator down / falscher Port) als auch gegen echtes AWS (falscher Region-Hostname oder blockiertes Netzwerk) auf.
Warum es passiert
- DynamoDB Local läuft nicht — du hast
--endpoint-url http://localhost:8000übergeben, aber der Emulator ist nicht auf diesem Port oben (siehe connection refused). - Falsche Endpoint-URL — ein Tippfehler, falscher Port oder
https, wo der lokale Emulatorhttpbedient. - Falsche Region — eine falsch geschriebene Region (
us-east-11) löst auf einen nicht existierenden Hostnamen auf, sodass die Verbindung nicht hergestellt werden kann. - Kein Netzwerkpfad — offline, oder DynamoDB-Traffic durch einen VPC-Endpoint, eine Security Group oder eine Network ACL blockiert.
- Container-übergreifend / Host-übergreifend — aus Docker heraus ist
localhostder Container selbst, nicht der Host oder der DynamoDB-Local-Service.
So behebst du es
- Bestätige, was am Endpoint lauscht:
curl http://localhost:8000 # DynamoDB Local answers with a small response - Korrigiere die Endpoint-URL — richtiger Host, Port (standardmäßig
8000) und Schema (httpfür Local). - Prüfe die Schreibweise der Region für echtes AWS und stelle sicher, dass du eine Netzwerkroute hast (VPC-Endpoint / Security-Group-Regeln erlauben DynamoDB).
- In Docker nutze den Compose-Service-Namen oder
host.docker.internalstattlocalhost(host.docker.internallöst in Docker Desktop automatisch auf; auf Linux Docker Engine füge--add-host host.docker.internal:host-gatewayhinzu). - Sprichst du mit echtem AWS? Lass die
--endpoint-url-Überschreibung komplett weg und lass botocore den korrekten regionalen Endpoint bauen.
DynoTable auf Local zeigen lassen
DynoTable prüft die Konnektivität mit Verbindung testen an jedem Profil unter
Einstellungen → Profile (Ein AWS-Konto verbinden). Für
DynamoDB Local setzt du den Endpunkt http://localhost:8000 (oder :4566 für
LocalStack) mit Platzhalter-Anmeldedaten — denselben Werten, die auch die CLI braucht.
Drück ⌘P, um das Profil zu wechseln, wenn deine App einen anderen Port nutzt
als DynoTable. Guide:
Mit DynamoDB Local & LocalStack verbinden.
Gegen echtes AWS erzeugt ein Tippfehler im Regionsnamen einen Hostnamen, der sich nicht
auflösen lässt — dieselbe Form von EndpointConnectionError wie ein nicht erreichbarer
Local-Port. Bestätige das mit aws sts get-caller-identity auf dem Profil, bevor du
DynamoDB-spezifische Einstellungen debuggst.
Verwandte Fehler
- Could not connect to DynamoDB Local (ECONNREFUSED) — das Node-/JS-Äquivalent einer abgelehnten lokalen Verbindung.
- Missing region in config — keine Region, sodass das SDK überhaupt keinen Endpoint bauen kann.
- Learn: DynamoDB Local betreiben · Mit DynamoDB Local / LocalStack verbinden
Quellen
- Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (default port 8000, dummy credentials,
--endpoint-url) - DynamoDB local usage notes — AWS DynamoDB Developer Guide (setting the local endpoint;
--endpoint-urlrequired on every CLI command) - Error handling — Boto3 Developer Guide (
EndpointConnectionErroras a client-side botocore exception) docker run --add-host— Docker CLI reference (host.docker.internal/host-gatewayfor container-to-host connections)