AWS CDK配置API网关需API Key遇403错误,如何解决?
解决AWS CDK中API Gateway API Key验证返回403的问题
你的问题核心是使用计划未关联API的部署阶段,导致API Key验证逻辑无法生效,最终返回403错误。以下是具体修复步骤:
1. 关联使用计划与API阶段
AWS API Gateway的使用计划必须绑定到具体的API部署阶段,才能让API Key在该阶段生效。RestApi默认会创建一个prod阶段,你需要显式将其关联到使用计划。
方式一:创建使用计划后关联阶段
在现有代码中添加阶段关联逻辑:
// 获取API的默认部署阶段(prod) const defaultStage = api.deploymentStage; // 将阶段添加到使用计划 usagePlan.addApiStage({ stage: defaultStage, });
方式二:创建使用计划时直接关联
也可以在定义使用计划时直接指定关联的阶段:
const usagePlan = api.addUsagePlan('UsagePlan', { name: 'UsagePlan', throttle: { rateLimit: 100, burstLimit: 200, }, // 直接关联默认prod阶段 apiStages: [{ stage: api.deploymentStage, }], });
2. 验证修复效果
部署更新后的CDK堆栈后,回到API Gateway控制台检查:
- 使用计划页面会显示已关联的阶段
- 再次调用API,携带正确的
x-api-key请求头或api-key查询参数,即可正常通过验证
额外检查项
- 确认API Key的
enabled属性设为true(你的代码已配置) - 端点的
apiKeyRequired已设为true,且请求参数规则正确(你的代码已配置) - 若使用自定义阶段而非默认
prod,需替换为对应的stage对象
内容的提问来源于stack exchange,提问作者sak
相关产品推荐
相关产品推荐

