Missing Authentication Token
TL;DR — "Missing Authentication Token" 表示請求要嘛沒有帶憑證**,要嘛命中了 AWS 不認得的端點/方法 — 對不存在路徑或不支援 HTTP 方法的請求會回傳這個,而非 404。對 DynamoDB 而言,它幾乎總是端點 URL 錯誤或一個從未被簽署的請求。**
這是什麼意思
{"message":"Missing Authentication Token"}AWS 的 SigV4 疑難排解指南對第一個原因很直白:若 API 請求未簽署,你可能收到 Missing Authentication Token。違反直覺地,同樣的訊息也會在路徑或 HTTP 方法不符任何路由時,從 API-Gateway 式端點回傳(HTTP 403)— AWS 對一個它無法路由的請求尋找 auth,並回報缺少的 token,而非「找不到」。當 DynamoDB 本身拒絕一個授權標頭缺少或格式不正確的請求時,例外為 MissingAuthenticationTokenException — HTTP 400、不可重試,訊息為 "Request must contain a valid (registered) AWS Access Key ID."
為什麼會發生
- 端點 URL 錯誤 — 在瀏覽器中或以純 GET 命中
https://dynamodb.<region>.amazonaws.com/some/path,而非對服務根目錄做正確簽署的 SDK 呼叫。 - 未簽署的請求 — 沒有 SigV4
Authorization標頭的原始curl/fetch(SDK 通常會加上它)。 - HTTP 方法錯誤 — DynamoDB 的 API 期望對
/做POST並帶一個指名操作的X-Amz-Target標頭;其他形狀不被認作簽署過的操作。 - 拼錯的自訂端點 — 指向不對應 DynamoDB 服務的 URL。
- DynamoDB Local 未設定 access key — SDK 即使在本地也要求設定 access key 與 region 值(任何值都可;Local 只用它們來命名其資料庫檔案)。
如何修正
- 使用 AWS SDK,而非原始 HTTP 呼叫。 讓 SDK 以正確的
X-Amz-Target建立簽署過的POST— 不要手工製作 URL。 - 指向服務根目錄(
https://dynamodb.<region>.amazonaws.com),而非路徑,並將用戶端的區域設為相符。 - 確認憑證已設定,讓 SDK 確實簽署請求(環境變數、profile 或 role)。
- 對 DynamoDB Local,將端點設為
http://localhost:8000並設定一個假的 access key/secret(只有字母與數字),讓 SDK 正常簽署 — Local 不驗證它們。
相關錯誤
- Unable to locate credentials — SDK 完全找不到憑證。
- The security token included in the request is invalid — 憑證存在但被拒絕。
- Could not connect to the endpoint URL — 格式不正確或無法連到的端點。
- 學習:Connect to DynamoDB Local & LocalStack
References
- Troubleshoot Signature Version 4 signing for AWS API requests — IAM User Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Create a signed AWS API request — IAM User Guide
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。