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 在一个它无法路由的请求上寻找认证,并报告缺失的 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 未配置访问密钥——即使在本地,SDK 也要求设置访问密钥和区域值(任意值都行;Local 只用它们来命名其数据库文件)。

如何修复

  1. 使用 AWS SDK,而不是原始的 HTTP 调用。 让 SDK 用正确的 X-Amz-Target 构建签名的 POST——不要手工拼制 URL。
  2. 指向服务根https://dynamodb.<region>.amazonaws.com),而不是一个路径,并设置客户端的区域与之匹配。
  3. 确认凭证已配置,这样 SDK 才会真的对请求签名(环境变量、profile 或角色)。
  4. 对于 DynamoDB Local,把端点设为 http://localhost:8000 并配置一个虚拟的访问密钥/密钥(只含字母和数字),这样 SDK 就正常签名——Local 不会验证它们。

相关错误

References

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

DynoTable 是面向 DynamoDB 的快速桌面客户端 —— 浏览表、运行 SQL 风格的查询,并在本地编辑项。