AWS API Gateway禁止使用禁用的API密钥,错误来自CloudFront

66次阅读
没有评论

问题描述

在使用Lambda/API Gateway组合时,如果没有进行显式的CloudFront配置,在错误响应头中提到了CloudFront。用户想知道为什么会出现这种情况。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在API Gateway中,如果禁用了API密钥,API仍然会返回”forbidden”错误。要解决这个问题,需要进行以下设置:
1. 打开API Gateway控制台。
2. 选择你的API。
3. 在左侧导航栏中选择”API Gateway” > “Custom domain names”。
4. 确保API Mapping中选择了正确的阶段(如”dev”)。
5. 保存更改。
以下是一个示例截图,显示了如何选择API Mapping的阶段:
AWS API Gateway禁止使用禁用的API密钥,错误来自CloudFront

方案2

根据API Gateway文档,当部署边缘优化的API时,API Gateway会设置一个Amazon CloudFront分发和一个DNS记录,将API域名映射到CloudFront分发的域名。然后,通过映射的CloudFront分发将API的请求路由到API Gateway。
要允许对API的方法进行调用而无需API密钥,请将其”API Key Required”设置为”false”:
1. 打开API Gateway控制台。
2. 选择你的API。
3. 在左侧导航栏中选择”Resources”。
4. 选择你想要设置的资源和方法。
5. 在右侧窗格中,选择”Method Request”。
6. 将”API Key Required”设置为”false”。
7. 保存更改。
以下是一个示例截图,显示了如何将”API Key Required”设置为”false”:
AWS API Gateway禁止使用禁用的API密钥,错误来自CloudFront
请注意,更改”API Key Required”设置后,记得点击旁边的小勾号保存更改,并在测试之前将API部署到一个阶段。

方案3

如果你使用的是Zappa创建的API,可能无法在UI中更改此设置。你可以尝试通过修改Zappa的配置文件来实现相同的效果。具体步骤如下:
1. 打开Zappa的配置文件(通常是zappa_settings.json)。
2. 找到你的API的配置部分。
3. 将"api_key_required"设置为false
4. 保存更改。
请注意,这种方法可能因Zappa的版本而异,具体步骤可能会有所不同。请参考Zappa的文档或寻求Zappa社区的帮助以获取更多信息。
以上是解决AWS API Gateway禁止使用禁用的API密钥,错误来自CloudFront的几种方法。根据你的具体情况选择适合你的解决方案。

正文完