如何通过yml为部分函数启用API Key鉴权 无需AWS手动配置
通过yml配置为指定Lambda函数启用API Key校验
全程无需登录AWS控制台手动操作,仅修改yml配置即可实现仅部分接口强制校验API Key的需求,可直接落地的配置方案如下:
第一步:添加全局API Key与使用计划配置
在yml的provider配置块下添加API Key、使用计划的全局声明(API Gateway要求API Key必须绑定使用计划才能生效,该部分全局配置仅需写一次):
provider: name: aws runtime: # 替换为你实际使用的Lambda运行时,例如nodejs18.x、python3.9等 # API Key相关全局配置 apiKeys: - name: service-access-key # 可自定义API Key的标识名 description: 受保护接口的访问凭证 usagePlan: - name: protected-api-plan description: 绑定所有需要API Key校验的接口 quota: limit: 10000 # 可根据业务需求调整请求配额,示例为每月10000次请求 period: MONTH throttle: burstLimit: 100 # 突发请求限流阈值 rateLimit: 50 # 每秒稳定请求限流阈值
第二步:修改目标函数的HTTP触发配置
针对你需要开启校验的GET接口,在对应的http事件配置块中添加private: true字段即可,其他不需要校验的函数无需做任何改动。修改后的目标函数配置如下:
Function_Name: handler: function path # 替换为你实际的函数处理程序路径 events: - http: path: path/{id} method: get private: true # 新增该行,开启当前接口的API Key强制校验
配置说明与注意事项
- 配置完成后执行部署命令,部署成功后可通过部署日志或者
sls info命令直接获取自动生成的API Key值,无需到控制台查询。 - 调用该GET接口时,必须在请求头中携带
x-api-key: 你的实际API Key值,未携带、Key值错误的请求会被API Gateway直接拦截返回403状态码,不会转发到后端Lambda函数。 - 未添加
private: true字段的其他HTTP接口,访问逻辑和之前完全一致,不需要传API Key,不会被该配置影响。 - 如果需要给多个函数开启API Key校验,仅需给对应函数的http事件块都加上
private: true字段即可,这些接口会自动绑定到之前配置的使用计划上,无需重复配置API Key资源。 - 不要遗漏provider层的
usagePlan配置,仅给函数加private: true会导致API Key无法绑定生效,校验规则不生效。
内容的提问来源于stack exchange,提问作者Hulubina
相关产品推荐
相关产品推荐

