Impossibile eseguire la richiesta HTTP (DynamoDB, Java SDK)
TL;DR: Java SDK non ha mai ricevuto una risposta HTTP: la connessione TCP all'endpoint DynamoDB non è riuscita. Contro localhost:8000 significa che DynamoDB Local non è in esecuzione (o si trova su un'altra porta) e all'interno dei contenitori Docker/SAM, localhost è il container, non la tua macchina, quindi l'emulatore non è raggiungibile a quell'indirizzo. Avvia l'emulatore, correggi l'endpoint e utilizza un indirizzo raggiungibile dall'host dai contenitori.
Cosa significa
com.amazonaws.SdkClientException: Unable to execute HTTP request:
Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refused"SdkClientException" (v1: "AmazonClientException") è il wrapper degli errori lato client dell'SDK: la richiesta è morta prima che DynamoDB la vedesse. La causa nidificata indica quale passaggio di rete non è riuscito: "Connessione rifiutata" (niente in ascolto), "connessione scaduta" (nessun percorso/firewall) o "UnknownHostException" (il nome host non viene risolto, spesso si tratta di una regione o di un endpoint con errori di battitura). È l'equivalente Java di Impossibile connettersi all'URL dell'endpoint di botocore.
Perché succede
- DynamoDB Local non è in esecuzione: non è mai stato avviato, si è bloccato all'avvio (libreria nativa, conflitto porta) o è uscito con l'ultimo terminale.
- Porta o schema errato — Il valore predefinito locale è "8000" rispetto al semplice "http"; un endpoint di
https://localhost:8000o la porta sbagliata rifiuta. localhostall'interno di un contenitore — il codice in esecuzione in Docker/SAM (sam local invoke) compone il proprio proprio loopback. L'emulatore sul tuo host (o in un contenitore fratello) non è presente.- Contro il reale AWS: nessun percorso di rete: proxy aziendale non configurato sul client HTTP dell'SDK, VPC senza route/endpoint per DynamoDB o una regione con errore di battitura che produce un nome host inesistente.
Come risolverlo
Conferma che qualcosa è in ascolto nel luogo in cui stai componendo:
curl http://localhost:8000 # DynamoDB Local answers 400 with an AmazonDynamoDBv2 bodyPuntare il client all'endpoint corretto (SDK v2):
DynamoDbClient client = DynamoDbClient.builder() .endpointOverride(URI.create("http://localhost:8000")) .region(Region.US_EAST_1) .build();Da un contenitore, non comporre
localhost: utilizzarehost.docker.internal:8000(Docker Desktop), il nome del servizio di composizione (http://dynamodb:8000) o collegare entrambi i contenitori alla stessa rete Docker. Persam local, passa un--docker-networkcondiviso con il contenitore dell'emulatore.Rispetto al reale AWS, verifica che il nome host della regione sia corretto e configura le impostazioni proxy dell'SDK se la tua rete ne richiede uno; dalle sottoreti private, aggiungi un endpoint VPC gateway DynamoDB o una route NAT.
Abbina HTTP e HTTPS. DynamoDB Il locale parla semplicemente HTTP sulla porta 8000: un endpoint
https://rifiuta la connessione.
Vedilo in DynoTable
Connettiti a locale da DynoTable invece di eseguire il debug cieco dei client HTTP Java: Impostazioni → Profili → Aggiungi profilo, imposta l'endpoint http://localhost:8000, scegli una stringa della regione ed esegui Test connessione. DynoTable conferma che l'emulatore è in ascolto prima che lo faccia il tuo SDK.
Per un reale AWS, lo stesso flusso del profilo si applica all'endpoint regionale. Consulta Connetti a AWS e Installa. Una volta connesso, apri le tabelle con ⌘K. Richieste di prototipo nel Builder di query dopo la conferma della connettività.
Fonti
- Errori di gestione nell'AWS SDK per Java 2.x (verificato il 13-07-2026)
- Distribuzione DynamoDB localmente (verificato il 13-07-2026)
Errori correlati
- Impossibile connettersi all'URL dell'endpoint (boto3) — il gemello Python.
- Impossibile connettersi a DynamoDB Locale (ECONNREFUSED) — il gemello Node.js.
- DynamoDB Porta locale 8000 in uso
- Impara: Esecuzione DynamoDB Locale · Connetti a Locale e LocalStack
Riferimenti
Errori di gestione nella AWS SDK for Java 2.x — Guida per gli sviluppatori (
SdkClientException= un problema lato client, ad esempio nessuna connessione di rete disponibile)Distribuzione di DynamoDB localmente sul computer — AWS DynamoDB Guida per gli sviluppatori (porta predefinita 8000, comando di avvio, esempi Docker)
DynamoDB note sull'utilizzo locale - AWS DynamoDB Guida per gli sviluppatori (impostazione dell'endpoint locale
http://localhost:8000)docker run --add-host— Riferimento CLI Docker (host.docker.internal/host-gatewayper connessioni da contenitore a host)
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra.