어떤 공급자로부터도 자격 증명을 로드할 수 없습니다

TL;DR — JavaScript v3용 AWS SDK는 환경 변수, SSO, 공유 구성/자격 증명 프로필, 웹 자격 증명, 컨테이너/인스턴스 메타데이터 엔드포인트 등 기본 자격 증명 체인 전체를 살펴봤지만 그 중 어느 것도 자격 증명을 생성하지 않았습니다. 체인이 찾을 수 있는 소스(env vars, aws configure, 연결된 역할)를 제공하거나 credentials를 명시적으로 클라이언트에 전달합니다. 이는 DynamoDB Local의 경우 어쨌든 더미 값이어야 합니다.

무엇을 의미하는가

CredentialsProviderError: Could not load credentials from any providers

모든 DynamoDB 요청은 SigV4로 서명되어야 하므로 첫 번째 호출 전에 SDK는 공급자 체인을 통해 자격 증명을 확인합니다. 이 오류는 체인의 "아무것도 찾을 수 없음" 결과입니다. 이는 DynamoDB에 대한 네트워크 호출 전에 발생하며 boto3의 Unable to locate credentials에 해당하는 JS v3입니다. 이는 권한 문제가 아닙니다(즉, AccessDeniedException). ID가 전혀 없습니다.

왜 발생하는가

  • 어디에도 구성된 자격 증명 없음 — 환경에 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY 없음, ~/.aws/credentials 없음, 역할 없음.
  • [default] 프로필이 존재하지 않습니다 — 이름이 지정된 프로필만 있지만 AWS_PROFILE가 설정되지 않아 체인이 [default]을 찾고 아무것도 찾지 못합니다.
  • 프로세스는 셸의 환경(내보낸 변수를 상속하지 않는 서비스 관리자, 크론 작업, 컨테이너 또는 IDE 실행)을 볼 수 없습니다.
  • 런타임에 역할이 연결되지 않음 - 예상되는 IAM 역할이 없는 ECS 작업, EC2 인스턴스 또는 Lambda이므로 메타데이터 공급자가 아무것도 반환하지 않습니다.
  • 간헐적으로 로드가 발생함: IMDS 조절 — EC2 인스턴스 메타데이터 서비스를 망치는 높은 동시성 워크로드는 산발적으로 자격 증명 가져오기에 실패할 수 있습니다(이 오류가 "무작위로" 나타나는 원인으로 알려져 있음).
  • ID 소스가 없는 브라우저 코드 — 프런트엔드 호출에는 Cognito ID 풀(또는 유사한) 자격 증명이 필요합니다. 브라우저에는 앰비언트 체인이 없습니다.

어떻게 해결하는가

  1. 하나의 자격 증명 소스를 선택하고 엔드 투 엔드를 확인하세요. 가장 빠른 확인: 코드를 실행하는 same 환경(동일한 사용자, 동일한 컨테이너)에서 aws sts get-caller-identity.

  2. 로컬 개발: aws configure([default] 쓰기) 또는 명명된 프로필만 사용하는 경우 AWS_PROFILE=myprofile를 설정합니다.

  3. DynamoDB Local / LocalStack: 체인에 의존하지 않습니다. 엔드포인트에 명시적 더미 자격 증명을 전달합니다.

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. AWS 런타임에서는 배송 키 대신 역할(EC2의 인스턴스 프로필, ECS/Fargate의 작업 역할, Lambda의 실행 역할)을 연결합니다.

  5. EC2의 동시성이 높은 경우 요청별로 자격 증명을 다시 가져오는 대신 자격 증명을 확인하고 캐시할 수 있도록 클라이언트를 한 번(모듈 범위) 생성합니다. SDK 재시도와 공유 클라이언트는 IMDS 문제를 흡수합니다.

  6. SDK v2와 v3 자격 증명 설정을 혼합하지 마세요 — 코드가 실제로 가져오는 SDK를 구성하세요.

DynoTable에서 검사

DynoTable이 테이블을 나열하면 자격 증명이 해결됩니다. 문제는 프로세스가 읽는 소스입니다. 설정 → 프로필에서 동일한 프로필을 추가하고 연결 테스트를 실행한 후 앱에서 사용하는 동일한 셸의 aws sts get-caller-identity와 비교하세요.

로컬의 경우 프로필에 더미 local/local 자격 증명을 사용하여 엔드포인트 http://localhost:8000를 설정합니다. Connect to AWSInstall를 참조하세요. 연결 후 ⌘K가 있는 테이블을 엽니다. Query Builder을 통해 테스트 쿼리를 실행하여 서명이 작동하는지 확인하세요.

출처

관련 오류

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.

Console 없이 DynamoDB 작업하기

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

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