DynamoDB 로컬: 이미 사용 중인 주소(포트 8000)

TL;DR — DynamoDB Local은 기본적으로 포트 8000을 바인딩하며 무언가가 이미 이를 보유하고 있습니다. 즉, 중지하지 않은 이전 DynamoDB Local, 다른 서비스 또는 중복된 serverless-offline/컨테이너입니다. 포트 8000을 확보하거나 -port를 사용하여 다른 포트에서 로컬을 시작하십시오(클라이언트가 이를 가리키도록).

무엇을 의미하는가

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

DynamoDB Local은 포트 8000에서 청취 소켓을 여는 Java 프로세스입니다. 해당 포트가 이미 바인딩된 경우 JVM은 이를 요청할 수 없으며 BindException로 종료됩니다. 이는 순전히 로컬 포트 충돌입니다. AWS 또는 자격 증명과는 아무 관련이 없습니다.

왜 발생하는가

  • 이전 DynamoDB Local이 여전히 실행 중입니다 — 이전 java -jar DynamoDBLocal.jar(또는 docker run) 동안 중지한 적이 없습니다.
  • 다른 서비스는 8000을 소유합니다. 즉, 동일한 포트에 있는 개발 서버, 프록시 또는 관련 없는 앱입니다.
  • 중복 툴링serverless-dynamodb-localserverless-offline 둘 다 8000 또는 2개의 docker-compose up 스택을 바인딩하려고 합니다.
  • 충돌된 인스턴스가 포트 바인드를 잠시 떠났거나(TIME_WAIT), 좀비 컨테이너입니다.

서버리스 및 테스트 실행기

serverless-dynamodb-local 플러그인과 Jest globalSetup 후크가 자주 시작됩니다. 암시적으로 로컬 — docker run -p 8000:8000 amazon/dynamodb-local도 실행하는 경우 수동으로 로컬이 설정되었음에도 불구하고 두 번째 바인드 시도는 BindException로 종료됩니다. 이미 건강해요. 머신 세션당 하나의 런처를 선택하세요.

macOS에서는 IDE 테스트 실행기의 고아 Java 프로세스가 자주 발생합니다. — lsof -i :8000는 종종 이전 Gradle 실행의 PID와 함께 java을 표시합니다.

어떻게 해결하는가

  1. 포트를 소유한 사람 찾기:

    lsof -i :8000                       # macOS / Linux
    netstat -ano | findstr :8000        # Windows (note the PID)
  2. 해당 프로세스를 중지(또는 이전 DynamoDB Local):

    kill <PID>                          # macOS / Linux
    taskkill /PID <PID> /F              # Windows
  3. 또는 다른 포트에서 DynamoDB Local을 실행하고 클라이언트를 업데이트합니다.

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -port 8001
    # then: endpoint = http://localhost:8001
  4. Docker? 매핑의 호스트 측(-p 8001:8000)을 변경하고 8001에 연결합니다.

  5. 중복 플러그인/스택을 제거하여 하나의 프로세스만 포트 바인딩을 시도하도록 합니다.

DynoTable에서

포트 8000을 해제한 후(또는 로컬을 -port 8001로 이동), install DynoTable 설정 → 프로필 → 프로필 추가에서 로컬 프로필을 추가하세요. 엔드포인트 설정 http://localhost:8000(또는 대체 포트), 자리 표시자 지역 및 영숫자 더미 자격 증명. 연결 테스트를 통해 에뮬레이터가 다음과 같은지 확인합니다. 테이블을 탐색하기 전에 듣기. 연습: Running DynamoDB Local · Connect to DynamoDB Local & LocalStack.

포트를 변경할 때 일치하도록 프로필 엔드포인트를 업데이트하세요. 프로필은 계속 유지됩니다. :8000를 가리키는 동안 로컬은 :8001를 청취합니다. connection refused 짝수 바인드 충돌이 해결된 후. DynamoDB JSON converter 로컬에 도달할 수 있으면 시드 데이터를 로드하는 데 도움이 됩니다.

관련 오류

출처

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.