어떤 공급자로부터도 자격 증명을 로드할 수 없습니다
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 풀(또는 유사한) 자격 증명이 필요합니다. 브라우저에는 앰비언트 체인이 없습니다.
어떻게 해결하는가
하나의 자격 증명 소스를 선택하고 엔드 투 엔드를 확인하세요. 가장 빠른 확인: 코드를 실행하는 same 환경(동일한 사용자, 동일한 컨테이너)에서
aws sts get-caller-identity.로컬 개발:
aws configure([default]쓰기) 또는 명명된 프로필만 사용하는 경우AWS_PROFILE=myprofile를 설정합니다.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'} });AWS 런타임에서는 배송 키 대신 역할(EC2의 인스턴스 프로필, ECS/Fargate의 작업 역할, Lambda의 실행 역할)을 연결합니다.
EC2의 동시성이 높은 경우 요청별로 자격 증명을 다시 가져오는 대신 자격 증명을 확인하고 캐시할 수 있도록 클라이언트를 한 번(모듈 범위) 생성합니다. SDK 재시도와 공유 클라이언트는 IMDS 문제를 흡수합니다.
SDK v2와 v3 자격 증명 설정을 혼합하지 마세요 — 코드가 실제로 가져오는 SDK를 구성하세요.
DynoTable에서 검사
DynoTable이 테이블을 나열하면 자격 증명이 해결됩니다. 문제는 프로세스가 읽는 소스입니다. 설정 → 프로필에서 동일한 프로필을 추가하고 연결 테스트를 실행한 후 앱에서 사용하는 동일한 셸의 aws sts get-caller-identity와 비교하세요.
로컬의 경우 프로필에 더미 local/local 자격 증명을 사용하여 엔드포인트 http://localhost:8000를 설정합니다. Connect to AWS 및 Install를 참조하세요. 연결 후 ⌘K가 있는 테이블을 엽니다. Query Builder을 통해 테스트 쿼리를 실행하여 서명이 작동하는지 확인하세요.
출처
- Set credentials in Node.js — AWS SDK for JavaScript v3 (2026-07-13 인증)
- AWS SDKs and Tools standardized credential providers (2026-07-13 인증)
관련 오류
- Unable to locate credentials (boto3) — Python에서도 동일한 실패입니다.
- The security token included in the request is invalid — 자격 증명이 발견되었지만 거부되었습니다.
- 설정에 리전이 없음
- 학습: Running DynamoDB Local
참고 자료
- Set credentials in Node.js — AWS SDK for JavaScript v3 Developer Guide (the default credential provider chain)
- AWS SDKs and Tools standardized credential providers — AWS SDKs and Tools Reference Guide
- AWS Signature Version 4 for API requests — IAM User Guide (why every request needs signed credentials)
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.