Could not load credentials from any providers
요약 — AWS SDK for JavaScript v3가 전체 기본 자격 증명 체인 — 환경 변수, SSO, 공유 config/credentials 프로필, 웹 자격 증명, 컨테이너/인스턴스 메타데이터 엔드포인트 — 을 훑었지만 어느 것도 자격 증명을 만들어내지 못했습니다. 체인이 찾을 수 있는 소스를 주거나(환경 변수, 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일 것입니다) — 식별자가 아예 없습니다.
왜 발생하나요
- 어디에도 자격 증명이 구성되지 않음 — 환경에
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY가 없고,~/.aws/credentials도 없고, 역할도 없습니다. [default]프로필이 존재하지 않음 — 이름 있는 프로필만 있는데AWS_PROFILE이 설정되지 않아 체인이[default]를 찾고 아무것도 못 찾습니다.- 프로세스가 셸의 환경을 보지 못함 — 내보낸 변수를 상속하지 않는 서비스 관리자, cron 작업, 컨테이너, 또는 IDE 실행.
- 런타임에 연결된 역할 없음 — 예상한 IAM 역할이 없는 ECS 작업, EC2 인스턴스, 또는 Lambda여서 메타데이터 프로바이더가 아무것도 반환하지 않습니다.
- 부하 시 간헐적: IMDS 스로틀링 — EC2 인스턴스 메타데이터 서비스를 두드리는 고동시성 워크로드가 자격 증명 가져오기를 산발적으로 실패할 수 있습니다(이 오류가 "무작위로" 나타나는 알려진 원인).
- 식별자 소스가 없는 브라우저 코드 — 프런트엔드 호출에는 Cognito Identity Pool(또는 유사) 자격 증명이 필요합니다. 브라우저에는 주변 체인이 없습니다.
어떻게 고치나요
하나의 자격 증명 소스를 골라 처음부터 끝까지 검증하세요. 가장 빠른 확인: 코드를 실행하는 같은 환경(같은 사용자, 같은 컨테이너)에서
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 자격 증명 설정을 섞지 마세요 — 코드가 실제로 import하는 SDK를 구성하세요.
자격 증명이 해석되면 데이터를 살펴보는 것이 전체 파이프라인을 확인하는 가장 빠른 방법입니다 — DynoTable 데스크톱 앱은 AWS 프로필(및 DynamoDB Local)로 연결하고 테이블을 즉시 보여줍니다. 첫 쿼리를 작성하나요? DynamoDB Expression Builder로 시작하세요.
관련 오류
- Unable to locate credentials (boto3) — Python에서의 동일한 실패.
- The security token included in the request is invalid — 자격 증명이 발견되었지만 거부됨.
- Missing region in config
- 학습: Running DynamoDB Local
References
- 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-07-13에 마지막으로 검증되었습니다.