"Could not connect to the endpoint URL" (DynamoDB): no se pudo conectar al endpoint URL

TL;DR: botocore no pudo abrir una conexión con el DynamoDB endpoint y lo resolvió. Casi siempre un --endpoint-url, DynamoDB local incorrecto que no se ejecuta, una región incorrecta o con errores tipográficos que produce un nombre de host inexistente o ninguna ruta de red (fuera de línea, VPC, grupo de seguridad). Apunta a un endpoint accesible y confirma que hay algo escuchando.

Qué 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 construye la URL del endpoint de DynamoDB a partir de la región (o de tu endpoint_url explícito) y luego no logra establecer una conexión TCP/HTTP con él. A diferencia de un error de autenticación o de validación, la solicitud nunca llegó a un servicio en marcha. Aparece tanto contra DynamoDB Local (emulador caído / puerto equivocado) como contra AWS real (nombre de host de región incorrecto o red bloqueada).

Por qué ocurre

  • DynamoDB Local no está en marcha — pasaste --endpoint-url http://localhost:8000 pero el emulador no está levantado en ese puerto (mira conexión rechazada).
  • URL de endpoint incorrecta — un typo, un puerto equivocado, o https donde el emulador local sirve http.
  • Región incorrecta — una región mal escrita (us-east-11) resuelve a un nombre de host que no existe, así que no se puede hacer la conexión.
  • Sin ruta de red — sin conexión, o tráfico de DynamoDB bloqueado por un endpoint de VPC, un grupo de seguridad o una ACL de red.
  • Entre contenedores / entre hosts — desde dentro de Docker, localhost es el propio contenedor, no el host ni el servicio de DynamoDB Local.

Cómo solucionarlo

  1. Confirma qué está escuchando en el endpoint:
    curl http://localhost:8000    # DynamoDB Local answers with a small response
  2. Corrige la URL del endpoint — host, puerto (8000 por defecto) y esquema (http para Local) correctos.
  3. Comprueba la ortografía de la región para AWS real, y asegúrate de tener una ruta de red (el endpoint de VPC / las reglas del grupo de seguridad permiten DynamoDB).
  4. En Docker, usa el nombre del servicio de compose o host.docker.internal en lugar de localhost (host.docker.internal se resuelve automáticamente en Docker Desktop; en Linux Docker Engine añade --add-host host.docker.internal:host-gateway).
  5. ¿Hablando con AWS real? Elimina por completo la sobrescritura de --endpoint-url y deja que botocore construya el endpoint regional correcto.

Apunta DynoTable a Local

DynoTable valida la conectividad con Test Connection en cada perfil de Settings → Profiles (Conectar una cuenta de AWS). Para DynamoDB Local, pon el endpoint http://localhost:8000 (o :4566 para LocalStack) con credenciales de relleno — los mismos valores que necesita la CLI. Pulsa ⌘P para cambiar de perfil cuando tu aplicación use un puerto distinto al de DynoTable. Guía: Conectar a DynamoDB Local y LocalStack.

Contra AWS real, un typo en la cadena de la región produce un nombre de host que no resuelve — la misma forma de EndpointConnectionError que un puerto de Local inalcanzable. Confírmalo con aws sts get-caller-identity sobre el perfil antes de depurar ajustes específicos de DynamoDB.

Errores relacionados

Fuentes

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.