"Could not connect to DynamoDB Local" (ECONNREFUSED) — DynamoDB 로컬에 연결할 수 없습니다

TL;DR — 고객이 전화를 거는 곳에서는 아무것도 듣고 있지 않습니다. DynamoDB Local이 예상한 포트에서 실제로 실행되고 있는지, 그리고 클라이언트의 endpointhttp://localhost:8000를 가리키는지 확인하세요. 실제 AWS는 아닙니다.

무엇을 의미하는가

Error: connect ECONNREFUSED 127.0.0.1:8000

TCP 연결이 거부되었습니다. 에뮬레이터가 해당 호스트/포트에 있지 않거나 클라이언트가 아무것도 수신하지 않는 곳을 가리키고 있습니다.

왜 발생하는가

  • DynamoDB Local이 실행되고 있지 않습니다 — 시작되거나, 충돌하거나, 종료되지 않았습니다(see the start-process error).
  • 잘못된 포트 — 로컬은 8000에 있지만 클라이언트는 8080로 전화를 겁니다(또는 컨테이너가 다른 호스트 포트를 매핑합니다).
  • 2개 세트 없음 — 이 설정이 없으면 SDK는 localhost가 아닌 실제 AWS와 통신합니다(그러면 인증/지역 오류로 표시되거나 호스트를 재정의하는 경우 거부됨).
  • Docker 네트워킹 — 다른 컨테이너에서 localhost는 호스트가 아닌 해당 컨테이너입니다. 서비스 이름/호스트 게이트웨이를 사용하세요.
  • localhost127.0.0.1 해상도 문제(IPv6 ::1).

일반적인 설정

설정엔드포인트알았어
도커 기본값http://localhost:8000컨테이너는 -p 8000:8000
사용자 정의 포트http://localhost:8001항아리 클라이언트에서 -port 8001 일치
서비스 작성http://dynamodb:8000다른 용기에서 - localhost가 아님
실수로 실제 AWShttps://dynamodb.<region>.amazonaws.com구름을 의미할 때는 endpoint를 삭제하세요

Windows에서 WSL과 호스트는 때때로 어떤 프로세스가 소유하는지에 대해 동의하지 않습니다. localhost:8000curl이 WSL에서 작동하지만 호스트의 노드가 WSL에서 작동하는 경우 ECONNREFUSED, 명시적으로 호스트 클라이언트를 127.0.0.1로 지정하거나 로컬을 실행합니다. 클라이언트가 실행되는 곳.

로컬 프로필에 대한 DynoTable의 연결 테스트는 가장 빠른 확인 방법입니다. 구성한 엔드포인트에서 무언가 응답합니다. 동일한 응답으로 실패합니다. 로컬이 다운되면 소켓이 거부됩니다.

어떻게 해결하는가

  1. 듣고 있는지 확인하세요.

    curl http://localhost:8000        # DynamoDB Local returns a small response
    lsof -i :8000                     # something should own the port
  2. 클라이언트에서 엔드포인트를 명시적으로 설정합니다.

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  3. 실제로 바인딩된 에뮬레이터(및 Docker 0 매핑)와 포트를 일치합니다.

  4. 교차 컨테이너? localhost가 아닌 컨테이너/서비스 이름(예: http://dynamodb-local:8000) 또는 host.docker.internal를 사용하십시오(host.docker.internal는 Docker Desktop에서 자동으로 확인되고 Linux Docker 엔진에서는 --add-host host.docker.internal:host-gateway를 추가함).

DynoTable 워크벤치

Install DynoTable을 선택한 다음 설정 → 프로필 → 프로필 추가를 선택하세요. 끝점 http://localhost:8000. ⌘P을 눌러 로컬 프로필로 전환하세요 curl http://localhost:8000이 성공하면. 자격증명 점은 녹색으로 유지되어야 합니다. 로컬이 작동하는 동안; 연결 오류로 인해 빨간색으로 바뀌면 포트나 엔드포인트가 프로필이 에뮬레이터가 수신하는 위치와 일치하지 않습니다. 사용 DynamoDB JSON converter 이후 고정 장치를 로드합니다. 로컬에 도달 가능합니다.

curl http://localhost:8000이 실패하면 에뮬레이터가 실행되고 있지 않은 것입니다. Docker를 시작하십시오. 또는 병 먼저(Unable to start DynamoDB Local process). 포트가 잘못되었지만 수신 대기 중인 경우 일반 HTTP 오류가 표시될 수 있습니다. ECONNREFUSED 대신; 프로필 끝점을 무엇이든 일치시키세요. lsof -i :8000 보고서. 가이드: Connect to DynamoDB Local & LocalStack.

관련 오류

출처

Console 없이 DynamoDB 작업하기

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

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