我按照说明为我的 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 |
abcd3456ef | API 1 | dev | (无) | https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev | https://api.example.com |
wxyz1234ab | API 2 | 测试 | 订单 | https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test | https://api.example.com/orders |
mnop5678qr | API 3 | prod | 客户 | https://mnop5678qr.execute-api.us-east-1.amazonaws.com/prod | https://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 网关中设置区域自定义域名