Flo*_*ish 2 api-key amazon-web-services http-status-code-403 aws-lambda chalice
我们已将 Chalice 应用程序部署到 AWS,并且在调用需要 API 密钥的端点时收到以下响应:
{
"message": "Forbidden"
}
Run Code Online (Sandbox Code Playgroud)
可以毫无问题地调用不需要 API 密钥的端点。
奇怪的是,我们过去能够毫无问题地调用需要 API 密钥的端点,因此我们还考虑是 Chalice 或 AWS 更新导致了该问题。
我们使用 Postman 将 API 密钥作为请求中的标头传递:
x-api-key:我们的 API 密钥的值。
我们也没有在 CloudWatch 中收到任何日志,大概是因为该问题实际上并未调用端点。AWS 在请求到达我们的端点之前就阻止了该请求。
我们的 API 密钥配置如下:
API 密钥:
相关使用计划:
API 密钥和使用计划看起来配置正确,因此我们假设问题不在于 API 密钥本身。
来自“排查 API Gateway 403 禁止错误”文档:
如果 API 密钥无效(或者我们假设不正确),我们将收到以下消息:
“指定的 API 密钥标识符无效”
然而,我们却收到了通用的“Forbidden”错误:
“禁止”
文档仅列出了导致此错误的三种可能原因:
当在 API 中激活 AWS WAF 时,请求将被 Web 应用程序防火墙 (WAF) 过滤阻止。
使用公共 DNS 名称从 Amazon Virtual Private Cloud (Amazon VPC) 内调用私有 API 时,请求中缺少“Host”或“x-apigw-api-id”标头。
禁用默认端点后,调用者使用默认的execute-api端点来调用REST API。
我们认为上述原因均不适用于我们,原因如下:
我们没有在 API 网关中配置 WAF(也没有 Web ACL)。
我们不会从 Amazon VPC 内调用私有 API。
我们没有禁用默认端点,而是使用默认的调用 URL。
我们是否错过了什么,或者这可能是 Chalice 或 AWS 的问题吗?
| 归档时间: |
|
| 查看次数: |
7555 次 |
| 最近记录: |