Could not connect to the endpoint URL (DynamoDB)

En bref — botocore n'a pas pu ouvrir de connexion vers l'endpoint DynamoDB qu'il a résolu. Presque toujours un mauvais --endpoint-url, DynamoDB Local non démarré, une région erronée/mal saisie produisant un nom d'hôte inexistant, ou aucun chemin réseau (hors ligne, VPC, groupe de sécurité). Pointe vers un endpoint joignable et confirme que quelque chose écoute.

Ce que ça signifie

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 construit l'URL de l'endpoint DynamoDB à partir de la région (ou de ton endpoint_url explicite), puis échoue à établir une connexion TCP/HTTP vers celle-ci. Contrairement à une erreur d'authentification ou de validation, la requête n'a jamais atteint un service en cours d'exécution. Cela apparaît à la fois face à DynamoDB Local (émulateur arrêté / mauvais port) et au vrai AWS (mauvais nom d'hôte de région ou réseau bloqué).

Pourquoi ça arrive

  • DynamoDB Local n'est pas démarré — tu as passé --endpoint-url http://localhost:8000 mais l'émulateur n'est pas actif sur ce port (voir connexion refusée).
  • Mauvaise URL d'endpoint — une faute de frappe, un mauvais port, ou https là où l'émulateur local sert http.
  • Mauvaise région — une région mal orthographiée (us-east-11) se résout en un nom d'hôte qui n'existe pas, donc la connexion ne peut être établie.
  • Aucun chemin réseau — hors ligne, ou trafic DynamoDB bloqué par un endpoint VPC, un groupe de sécurité ou une ACL réseau.
  • Cross-conteneur / cross-hôte — depuis l'intérieur de Docker, localhost est le conteneur lui-même, pas l'hôte ni le service DynamoDB Local.

Comment le corriger

  1. Confirme ce qui écoute à l'endpoint :
    curl http://localhost:8000    # DynamoDB Local answers with a small response
  2. Corrige l'URL de l'endpoint — hôte, port (8000 par défaut) et schéma (http pour Local) corrects.
  3. Vérifie l'orthographe de la région pour le vrai AWS, et assure-toi d'avoir une route réseau (l'endpoint VPC / les règles du groupe de sécurité autorisent DynamoDB).
  4. Dans Docker, utilise le nom du service compose ou host.docker.internal au lieu de localhost (host.docker.internal se résout automatiquement dans Docker Desktop ; sur Linux Docker Engine, ajoute --add-host host.docker.internal:host-gateway).
  5. Tu parles au vrai AWS ? Retire entièrement l'override --endpoint-url et laisse botocore construire l'endpoint régional correct.

Pointe DynoTable vers Local

DynoTable valide la connectivité avec Test Connection sur chaque profil dans Settings → Profiles (Connecter un compte AWS). Pour DynamoDB Local, mets l'endpoint http://localhost:8000 (ou :4566 pour LocalStack) avec des identifiants factices — les mêmes valeurs que celles dont la CLI a besoin. Appuie sur ⌘P pour changer de profil quand ton app utilise un autre port que DynoTable. Guide : Se connecter à DynamoDB Local et LocalStack.

Face au vrai AWS, une faute de frappe dans la chaîne de région produit un nom d'hôte qui ne se résout pas — exactement la même forme d'EndpointConnectionError qu'un port Local injoignable. Confirme avec aws sts get-caller-identity sur le profil avant de déboguer des réglages propres à DynamoDB.

Erreurs liées

Sources

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.