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(或類似)憑證;瀏覽器中沒有環境憑證鏈。

如何修正

  1. 選定一個憑證來源並端到端地驗證它。 最快的檢查:在執行你程式碼的_同一個_環境(同一使用者、同一容器)中執行 aws sts get-caller-identity

  2. 本地開發: aws configure(寫入 [default]),或者當你只用命名 profile 時設定 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 用你的 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 執行測試查詢以確認簽名有效。

來源

相關錯誤

參考資料

最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。