No se puede ejecutar la solicitud HTTP (DynamoDB, Java SDK)
TL;DR — El SDK de Java nunca recibió una respuesta HTTP: la conexión TCP al DynamoDB endpoint falló. Contra localhost:8000 eso significa DynamoDB Local no se está ejecutando (o está en otro puerto), y dentro de los contenedores Docker/SAM, localhost es el contenedor, no su máquina, por lo que no se puede acceder al emulador en esa dirección. Inicie el emulador, corrija el endpoint y use una dirección accesible al host desde los contenedores.
Qué significa
com.amazonaws.SdkClientException: Unable to execute HTTP request:
Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refusedSdkClientException (v1: AmazonClientException) es el envoltorio de fallo del lado del cliente del SDK — la petición murió antes de que DynamoDB llegara a verla. La causa anidada te dice qué paso de red falló: Connection refused (nada escuchando), connect timed out (sin ruta/firewall) o UnknownHostException (el nombre de host no resuelve, a menudo una región o endpoint mal escritos). Es el equivalente en Java del Could not connect to the endpoint URL de botocore.
Por qué ocurre
- DynamoDB Local no está en marcha — nunca se arrancó, falló al arrancar (biblioteca nativa, conflicto de puerto), o se cerró con tu última terminal.
- Puerto o esquema incorrectos — Local usa por defecto el
8000sobrehttpplano; un endpoint dehttps://localhost:8000o el puerto equivocado rechaza la conexión. localhostdentro de un contenedor — el código que corre en Docker/SAM (sam local invoke) marca su propio loopback. El emulador en tu host (o en un contenedor hermano) no está ahí.- Contra AWS real: sin ruta de red — proxy corporativo no configurado en el cliente HTTP del SDK, VPC sin una ruta/endpoint para DynamoDB, o una región mal escrita que produce un nombre de host inexistente.
Cómo solucionarlo
Confirma que algo está escuchando donde estás marcando:
curl http://localhost:8000 # DynamoDB Local answers 400 with an AmazonDynamoDBv2 bodySi eso falla, arranca el emulador (
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jarodocker run -p 8000:8000 amazon/dynamodb-local).Apunta el cliente al endpoint correcto (SDK v2):
DynamoDbClient client = DynamoDbClient.builder() .endpointOverride(URI.create("http://localhost:8000")) .region(Region.US_EAST_1) .build();Desde un contenedor, no marques
localhost— usahost.docker.internal:8000(Docker Desktop), el nombre del servicio de compose (http://dynamodb:8000), o conecta ambos contenedores a la misma red de Docker. Parasam local, pasa un--docker-networkcompartido con el contenedor del emulador.Contra AWS real, verifica que el nombre de host de la región sea correcto y configura los ajustes de proxy del SDK si tu red lo requiere; desde subredes privadas, añade un endpoint de VPC de tipo gateway para DynamoDB o una ruta NAT.
Haz coincidir HTTP y HTTPS. DynamoDB Local habla HTTP plano en el puerto 8000 — un endpoint
https://rechaza la conexión.
Míralo en DynoTable
Conéctate a Local desde DynoTable en lugar de depurar clientes HTTP de Java a ciegas — Settings → Profiles → Add Profile, pon el endpoint http://localhost:8000, elige cualquier cadena de región y lanza Test Connection. DynoTable confirma que el emulador está escuchando antes que tu SDK.
Para AWS real, el mismo flujo de perfiles aplica con el endpoint regional. Consulta Conectar con AWS e Instalación. Una vez conectado, abre tablas con ⌘K. Prototipa peticiones en el Query Builder cuando la conectividad esté confirmada.
Fuentes
- Handling errors in the AWS SDK for Java 2.x (verificado el 2026-07-13)
- Deploying DynamoDB locally (verificado el 2026-07-13)
Errores relacionados
- Could not connect to the endpoint URL (boto3) — el gemelo en Python.
- Could not connect to DynamoDB Local (ECONNREFUSED) — el gemelo en Node.js.
- Puerto 8000 de DynamoDB Local en uso
- Aprende: Ejecutar DynamoDB Local · Conectar a Local y LocalStack
Referencias
- Handling errors in the AWS SDK for Java 2.x — Developer Guide (
SdkClientException= a client-side problem, e.g. no network connection available) - Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (default port 8000, launch command, Docker examples)
- DynamoDB local usage notes — AWS DynamoDB Developer Guide (setting the local endpoint
http://localhost:8000) docker run --add-host— Docker CLI reference (host.docker.internal/host-gatewayfor container-to-host connections)
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.