Could not load credentials from any providers
TL;DR — AWS SDK for JavaScript v3 走遍了它的整條預設憑證鏈——環境變數、SSO、共享 config/credentials profile、web identity,以及容器/例項後設資料端點——沒有一個產出憑證。給這條鏈一個它能找到的來源(環境變數、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]profile 不存在——你只有命名的 profile,但沒有設定AWS_PROFILE,因此鏈去找[default]卻什麼都沒找到。- 程序看不到你 shell 的環境——一個服務管理器、cron 任務、容器或 IDE 啟動,沒有繼承你匯出的變數。
- 執行時中沒有附加角色——一個沒有預期 IAM 角色的 ECS 任務、EC2 例項或 Lambda,因此後設資料提供者返回空。
- 高負載下的間歇性問題: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 執行時中,附加角色——EC2 上的例項設定檔案、ECS/Fargate 上的任務角色、Lambda 上的執行角色——而不是分發金鑰。
在 EC2 上高並行時,只建立一次用戶端(模組作用域),讓憑證被解析並快取,而非每個請求重新獲取;SDK 重試加上一個共享用戶端可以吸收 IMDS 的抖動。
不要混用 SDK v2 和 v3 的憑證設定——為你程式碼實際匯入的那個 SDK 做配置。
一旦憑證解析成功,瀏覽資料是確認整條流水線的最快方式——DynoTable 用你的 AWS profile 連線(以及 DynamoDB Local)並立即顯示你的表,它從 ~/.aws 解析憑證的方式與 CLI 完全相同。
在 DynoTable 中檢查
如果 DynoTable 列出你的表,則憑據解析 — 問題在於你的程序讀取哪個源。在“設定”→“設定檔案”下新增相同的設定檔案,執行 Test Connection,並在你的應用程式使用的同一 shell 中與 aws sts get-caller-identity 進行比較。對於本地,在設定檔案上使用虛擬 local/local 憑據設定端點 http://localhost:8000。參見連線 AWS和安裝。連線後用⌘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 驗證)
相關錯誤
- 找不到憑證(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)
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。