Missing Authentication Token

TL;DR — "Missing Authentication Token" 意味著請求要麼沒有帶憑證,要麼打到了一個 AWS 不認識的 endpoint/方法上——對一個不存在的路徑或不受支援的 HTTP 方法發請求,返回的是這個而不是 404。對 DynamoDB 而言,它幾乎總是一個錯誤的 endpoint URL,或者一個從未被簽名的請求。

這是什麼意思

{"message":"Missing Authentication Token"}

AWS 的 SigV4 排錯指南對第一種成因說得很直白:如果 API 請求沒有被簽名,你可能會收到 Missing Authentication Token。反直覺的是,當路徑或 HTTP 方法匹配不上任何路由時,API-Gateway 式的 endpoint 也會回同一條訊息(HTTP 403)——AWS 在一個它無法路由的請求上去找認證資訊,然後報告缺少令牌,而不是報“找不到”。當 DynamoDB 自己拒絕一個授權頭缺失或格式有誤的請求時,異常是 MissingAuthenticationTokenException——HTTP 400,不可重試,訊息是 "Request must contain a valid (registered) AWS Access Key ID."。

為什麼會發生

  • endpoint URL 錯誤——在瀏覽器裡或用普通 GET 去打 https://dynamodb.<region>.amazonaws.com/some/path,而不是用正確簽名的 SDK 呼叫打服務根地址。
  • 未簽名的請求——一個沒有 SigV4 Authorization 頭的裸 curl/fetch(SDK 通常會加上它)。
  • HTTP 方法錯誤——DynamoDB 的 API 期望對 /POST,並帶上點名操作的 X-Amz-Target 頭;其他形狀不會被識別成已簽名的操作。
  • 自定義 endpoint 拼錯了——指向了一個並不對應 DynamoDB 服務的 URL。
  • DynamoDB Local 沒有配置訪問金鑰——即使在本地,SDK 也要求設定訪問金鑰和區域值(任何值都行;Local 只用它們來給自己的資料庫檔案命名)。

如何修正

  1. 用 AWS SDK,而不是裸的 HTTP 呼叫。讓 SDK 構造帶正確 X-Amz-Target 的已簽名 POST——別手工拼 URL。
  2. 指向服務根地址https://dynamodb.<region>.amazonaws.com),而不是某個路徑,並把用戶端的區域設成與之匹配。
  3. 確認憑證已配置好,這樣 SDK 才會真的去簽名(環境變數、profile 或角色)。
  4. 對於 DynamoDB Local,把 endpoint 設成 http://localhost:8000,並配一個假的訪問金鑰/金鑰(只用字母和數字),好讓 SDK 正常簽名——Local 並不校驗它們。

重現方式

傳送完全沒有 Authorization 標頭的格式正確的 DynamoDB 請求:

import requests
requests.post(
    'https://dynamodb.us-east-1.amazonaws.com',
    headers={
        'X-Amz-Target': 'DynamoDB_20120810.ListTables',
        'Content-Type': 'application/x-amz-json-1.0',
    },
    data='{}',
)

實際輸出:

MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400

值得注意的是,當你透過 SDK 收到此訊息時:這通常意味著請求從未簽名,而不是憑證錯誤。未簽名的請求是你從手動 HTTP 呼叫、剝離標頭的代理或需要 IAM 身份驗證的 API 閘道器路由獲得的內容 - 因此請檢視請求的構建方式而不是金鑰。

DynoTable + Local

DynoTable 透過 AWS SDK 對每個 DynamoDB 呼叫進行簽名 — 無需手動構建 Authorization 標頭 (Connect an AWS account)。對於 DynamoDB 本地,新增端點為 http://localhost:8000 的設定檔案並預留位置憑據,以便正常簽署請求;本地忽略該鍵值,但仍然需要它們 (Running DynamoDB Local)。如果你在真實的 AWS 上看到此情況,請確認 Settings → Profiles 指向正確的區域端點並且Test Connection在開啟之前成功表。 DynamoDB Expression Builder 一旦端點正確,確認簽名的請求有效。

相關錯誤

來源

根據 us-east-1 中的實時 DynamoDB 服務於 2026 年 7 月 26 日轉載 — 上面的輸出是逐字記錄的。

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

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

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