"Could not connect to DynamoDB Local" (ECONNREFUSED): impossibile connettersi a DynamoDB Locale

TL;DR: non c'è nulla in ascolto nel luogo in cui il tuo cliente sta componendo. Conferma che DynamoDB Local sia effettivamente in esecuzione sulla porta prevista e che l'"endpoint" del tuo client punti a "http://localhost:8000" — non reale AWS.

Cosa significa

Error: connect ECONNREFUSED 127.0.0.1:8000

La connessione TCP è stata rifiutata: l'emulatore non è attivo su quell'host/porta oppure il client è puntato da qualche parte e nessuno è in ascolto.

Perché succede

  • DynamoDB Local non è in esecuzione: non è mai stato avviato, non si è arrestato in modo anomalo o è stato arrestato (vedere l'errore di avvio del processo).
  • Porta errata: il locale è su "8000" ma il client chiama "8080" (o il contenitore mappa una porta host diversa).
  • Nessun set di endpoint — senza di esso l'SDK comunica con real AWS, non con localhost (che quindi emerge come errori di autenticazione/regione o viene rifiutato se si esegue l'override dell'host).
  • Rete Docker: da un altro contenitore, localhost è quel contenitore, non l'host. Utilizza il nome del servizio/gateway host.
  • localhost vs 127.0.0.1 problemi di risoluzione (IPv6 ::1).

Configurazioni tipiche

ImpostazionePunto finaleCapito
Docker predefinitohttp://localhost:8000Il contenitore deve pubblicare -p 8000:8000
Porta personalizzatahttp://localhost:8001Corrisponde a -port 8001 sul jar e sul client
Componi serviziohttp://dynamodb:8000Da un altro contenitore — non localhost
Reale AWS per errorehttps://dynamodb.<regione>.amazonaws.comRilascia "endpoint" quando intendi cloud

Su Windows, WSL e l'host a volte non sono d'accordo su quale processo sia proprietario localhost:8000 — se curl funziona in WSL ma Node sull'host ottiene "ECONNREFUSED", punta esplicitamente il client host a "127.0.0.1" o esegue Local dove viene eseguito il client.

Il Test connessione di DynoTable su un profilo locale è il controllo più veloce qualcosa risponde sull'endpoint che hai configurato: fallisce con lo stesso socket rifiutato quando Local è inattivo.

Come risolverlo

  1. Conferma che è in ascolto:
    curl http://localhost:8000        # DynamoDB Local returns a small response
    lsof -i :8000                     # something should own the port
  2. Impostare esplicitamente l'endpoint sul client:
    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  3. Abbina la porta all'emulatore effettivamente associato (e la mappatura Docker -p host:container).
  4. Contenitore incrociato? Utilizzare il nome del contenitore/servizio (ad esempio http://dynamodb-local:8000) o host.docker.internal, non localhost (host.docker.internal si risolve automaticamente in Docker Desktop; su Linux Docker Engine aggiungere --add-host host.docker.internal:host-gateway).

Workbench DynoTable

Installa DynoTable, quindi Impostazioni → Profili → Aggiungi profilo con endpoint "http://localhost:8000". Premi ⌘P per passare al profilo Locale una volta che curl http://localhost:8000 ha esito positivo. Il punto della credenziale dovrebbe rimanere verde mentre Locale è attivo; se diventa rosso in caso di errori di connessione, la porta o l'endpoint sono attivi il profilo non corrisponde a dove è in ascolto l'emulatore. Usa il DynamoDB JSON convertitore per caricare le apparecchiature dopo Il locale è raggiungibile.

Se curl http://localhost:8000 fallisce, l'emulatore non è in esecuzione: avvia Docker o prima il jar (Impossibile avviare DynamoDB Processo locale). Quando la porta è sbagliata ma qualcosa è in ascolto, potresti visualizzare un errore HTTP generico invece di "ECONNREFUSED"; abbina l'endpoint del profilo a qualunque cosa lsof -i :8000 rapporti. Guida: Connetti a DynamoDB Locale e LocalStack.

Errori correlati

Fonti

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.