DynamoDB Local: Address already in use (port 8000)

TL;DR — DynamoDB Local varsayılan olarak 8000 portuna bağlanır ve bir şey onu zaten tutuyor — durdurmadığınız daha önceki bir DynamoDB Local, başka bir hizmet ya da yinelenen bir serverless-offline/kapsayıcı. Ya 8000 portunu serbest bırakın ya da Local'i -port ile farklı bir portta başlatın (ve istemcinizi ona yöneltin).

Ne anlama gelir

Exception in thread "main" java.net.BindException: Address already in use
   ... Failed to bind to port 8000

DynamoDB Local, 8000 portunda dinleme soketi açan bir Java sürecidir. O port zaten bağlıysa, JVM onu talep edemez ve BindException ile çıkar. Bu tamamen bir yerel port çakışmasıdır — AWS veya kimlik bilgileriyle ilgisi yoktur.

Neden olur

  • Önceki bir DynamoDB Local hâlâ çalışıyor — hiç durdurmadığınız önceki bir java -jar DynamoDBLocal.jar (ya da docker run).
  • Başka bir hizmet 8000'e sahip — aynı portta bir geliştirme sunucusu, proxy veya ilgisiz bir uygulama.
  • Yinelenen araçlarserverless-dynamodb-local ve serverless-offline'ın her ikisi de 8000'e bağlanmaya çalışıyor ya da iki docker-compose up yığını.
  • Çökmüş bir örnek portu kısa süre bağlı bıraktı (TIME_WAIT) ya da bir zombi kapsayıcı.

Serverless ve test koşucuları

serverless-dynamodb-local eklentisi ve Jest globalSetup kancaları Local'i çoğu zaman örtük olarak başlatır — ayrıca elle docker run -p 8000:8000 amazon/dynamodb-local çalıştırıyorsanız, Local zaten sağlıklı olsa bile ikinci bağlanma denemesi BindException ile ölür. Makine oturumu başına tek bir başlatıcı seçin.

macOS'ta bir IDE test koşucusundan kalan sahipsiz Java süreçleri sık rastlanan bir suçludur — lsof -i :8000 çoğu zaman daha önceki bir Gradle çalıştırmasından kalma PID'li bir java gösterir.

Nasıl düzeltilir

  1. Porta neyin sahip olduğunu bulun:
    lsof -i :8000                       # macOS / Linux
    netstat -ano | findstr :8000        # Windows (note the PID)
  2. O süreci durdurun (ya da eski DynamoDB Local'i):
    kill <PID>                          # macOS / Linux
    taskkill /PID <PID> /F              # Windows
  3. Ya da DynamoDB Local'i farklı bir portta çalıştırın ve istemcinizi güncelleyin:
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 8001
    # then: endpoint = http://localhost:8001
  4. Docker mı? Eşlemenin ana bilgisayar tarafını değiştirin (-p 8001:8000) ve 8001'e bağlanın.
  5. Yinelenen eklentileri/yığınları kaldırın, böylece porta yalnızca bir süreç bağlanmaya çalışsın.

DynoTable’da

Bağlantı noktası 8000'i serbest bıraktıktan sonra (veya Yerel'i -port 8001'a taşıdıktan sonra), install DynoTable ve Ayarlar → Profiller → Profil Ekle'ye giderek bir Yerel profil ekleyin: uç noktayı ayarlayın http://localhost:8000 (veya alternatif bağlantı noktanız), bir yer tutucu bölge ve alfasayısal kukla kimlik bilgileri. Bağlantıyı Test Et emülatörün çalıştığını doğrular Tablolara göz atmadan önce dinleyin. İzlenecek yol: Running DynamoDB Local · DynamoDB Local ve LocalStack'e bağlanma.

Bağlantı noktalarını değiştirdiğinizde profil uç noktasını eşleşecek şekilde güncelleyin; hâlâ bir profil Yerel :8001'ü dinlerken :8000'yi işaret etmek connection refused hatta bağlama çatışması çözüldükten sonra. DynamoDB JSON converter Yerel ulaşılabilir olduğunda tohum verilerinin yüklenmesine yardımcı olur.

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.