Could not load credentials from any providers
TL;DR — AWS SDK for JavaScript v3 走遍了它整條預設憑證鏈 — 環境變數、SSO、共用的 config/credentials profile、web identity,以及容器/實例中繼資料端點 — 沒有一個產生出憑證。給這條鏈一個它能找到的來源(環境變數、aws configure、附掛的 role),或明確地將 credentials 傳給用戶端 — 對 DynamoDB Local 而言,那本來就應該是假的值。
這是什麼意思
CredentialsProviderError: Could not load credentials from any providers每個 DynamoDB 請求都必須經 SigV4 簽署,因此在第一次呼叫前,SDK 會透過其 provider 鏈解析憑證。這個錯誤就是這條鏈的「什麼都沒找到」結果 — 它在任何對 DynamoDB 的網路呼叫前就觸發,是 boto3 Unable to locate credentials 的 JS v3 對應版本。它不是權限問題(那會是 AccessDeniedException)— 根本沒有任何身分。
為什麼會發生
- 任何地方都沒設定憑證 — 環境中沒有
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY、沒有~/.aws/credentials、沒有 role。 [default]profile 不存在 — 你只有具名 profile,但AWS_PROFILE沒設定,因此這條鏈尋找[default]卻什麼都找不到。- 行程看不到你 shell 的環境 — 服務管理器、cron 工作、容器或 IDE 啟動時未繼承你匯出的變數。
- 執行環境中未附掛 role — 沒有預期 IAM role 的 ECS task、EC2 實例或 Lambda,因此中繼資料 provider 回傳空的。
- 高負載下間歇發生:IMDS 節流 — 高並行工作負載猛打 EC2 實例中繼資料服務,可能偶發地讓憑證取得失敗(這個錯誤「隨機」出現的已知原因)。
- 沒有身分來源的瀏覽器程式碼 — 前端呼叫需要 Cognito Identity Pool(或類似)憑證;瀏覽器中沒有環境憑證鏈。
如何修正
選一個憑證來源並端到端驗證它。 最快的檢查:在執行你程式碼的_同一個_環境(同一使用者、同一容器)中執行
aws sts get-caller-identity。本機開發:
aws configure(寫入[default]),或當你只用具名 profile 時設定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 執行環境中,附掛 role — EC2 上的 instance profile、ECS/Fargate 上的 task role、Lambda 上的 execution role — 而非帶入金鑰。
在 EC2 上的高並行下,只建立一次用戶端(模組作用域),讓憑證被解析並快取,而非每個請求重新取得;SDK 重試加上共用用戶端可吸收 IMDS 的偶發狀況。
不要混用 SDK v2 與 v3 的憑證設定 — 設定你程式碼實際匯入的那個 SDK。
一旦憑證解析成功,瀏覽資料是確認整條管線最快的方式 — DynoTable 桌面應用程式以你的 AWS profile(以及 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)
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。