使用自定义域名调用 API 网关 REST 或 HTTP API 时,如何解决 403 "missing authentication token"(缺少身份验证令牌)错误?

2 分钟阅读
0

我按照说明为我的 Amazon API Gateway REST 或 HTTP API 设置了一个自定义域名。.我在调用 API 时收到 403 "Missing Authentication token"(缺少身份验证令牌)错误讯息。如何排查并解决此错误?

简短描述

如果网址路径不正确,则具有自定义域名的 API 网关 API 在调用 API 时返回 403 "Missing Authentication token"(缺少身份验证令牌)错误。

**注意:**使用 API 网关 API 阶段 URL 不会返回 403 "Missing Authentication token"(缺少身份验证令牌)错误。

解决方法

为 API 网关 API 配置的自定义域名使用 API 映射来连接 API 阶段,以便通过自定义域名向 API 发送流量。API 映射有 API、阶段、自定义域名以及用于映射的可选路径。有关更多信息,请参阅使用 API 映射

在以下示例中,自定义域 "https://api.example.com" API 映射配置如下:

API示例阶段路径默认 URL自定义域 URL
abcd3456efAPI 1dev(无)https://abcd3456ef.execute-api.us-east-1.amazonaws.com/devhttps://api.example.com
wxyz1234abAPI 2测试订单https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/testhttps://api.example.com/orders
mnop5678qrAPI 3prod客户https://mnop5678qr.execute-api.us-east-1.amazonaws.com/prodhttps://api.example.com/customers

在此示例配置中,使用 URL https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev/resourceA 向 API 1 发出的请求将流量成功路由到 "resourceA"。这是因为向资源发出了阶段名 "dev" 的请求。但是,使用 URL https://api.example.com/dev/resourceA 的同一个请求会返回 403 "Missing Authentication token"(缺少身份验证令牌)错误。之所以出现此错误,是因为阶段 "dev" 被映射到自定义域名的(无)路径。要使用自定义域名将请求路由到 "resourceA",请确保 URL 为 https://api.example.com/resourceA。

同样,等效于 https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test/resourceB 的自定义域名 URL 是 https://api.example.com/orders/resourceB。这是因为 API 2 的 "test" 阶段映射到自定义域 API 映射中的 "orders" 路径。


相关信息

如何排查 API 网关中的 HTTP 403 错误?

如何排查 API 网关 REST API 端点的 403 "Missing Authentication Token"(缺少身份验证令牌)错误?

在 API 网关中设置区域自定义域名

AWS 官方
AWS 官方已更新 1 年前