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 只用它們來給自己的資料庫檔案命名)。
如何修正
- 用 AWS SDK,而不是裸的 HTTP 呼叫。讓 SDK 構造帶正確
X-Amz-Target的已簽名POST——別手工拼 URL。 - 指向服務根地址(
https://dynamodb.<region>.amazonaws.com),而不是某個路徑,並把用戶端的區域設成與之匹配。 - 確認憑證已配置好,這樣 SDK 才會真的去簽名(環境變數、profile 或角色)。
- 對於 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
一旦端點正確,確認簽名的請求有效。
相關錯誤
- Unable to locate credentials——SDK 完全沒有找到任何憑證。
- The security token included in the request is invalid——憑證在,但被拒絕了。
- Could not connect to the endpoint URL——endpoint 格式有誤或不可達。
- 學習:Connect to DynamoDB Local & LocalStack
來源
- Troubleshoot Signature Version 4 signing for AWS API requests — IAM User Guide(2026-07-13 驗證)
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide(2026-07-13 驗證)
- Create a signed AWS API request — IAM User Guide(2026-07-13 驗證)
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide(2026-07-13 驗證)
根據 us-east-1 中的實時 DynamoDB 服務於 2026 年 7 月 26 日轉載 — 上面的輸出是逐字記錄的。