AWS HTTP API Gateway是否存在与REST API等效的API Key功能?
AWS API Gateway HTTP API(v2)API Key等效实现方案
首先明确:AWS API Gateway HTTP API(v2)原生没有提供和REST API(v1)完全等效的内置API Key功能,属于v2版本的设计取舍,原生配置中无对应开关,因此直接给httpApi事件加private: true配置会触发不识别属性的警告。
如果要实现和v1版本一致的、通过X-API-Key请求头控制接口访问的效果,最常用的替代方案是搭配Lambda自定义授权器实现,具体配置参考如下(serverless框架示例):
- 编写自定义授权Lambda逻辑:读取请求头中
X-API-Key的值,和预设的合法密钥比对,匹配则返回允许访问的IAM策略,不匹配返回401拒绝访问,合法密钥可以存在Lambda环境变量、AWS Secrets Manager或Parameter Store中。 - serverless.yml配置示例:
provider: name: aws httpApi: authorizers: apiKeyAuthorizer: type: request functionName: apiKeyAuth # 指定从X-API-Key请求头获取身份标识 identitySource: $request.header.X-API-Key functions: # 自定义授权函数 apiKeyAuth: handler: authorizer.check_key environment: # 可填入多个合法密钥,逻辑中自行拆分校验 ALLOWED_API_KEYS: "your-first-api-key,your-second-api-key" # 业务接口 hello: handler: handler.hello events: - httpApi: path: /hello method: get # 绑定自定义授权器 authorizer: apiKeyAuthorizer
如果你的场景不需要兼容原有X-API-Key调用方式,也可以直接使用HTTP API原生支持的JWT授权方案,安全性比静态API Key更高。
内容的提问来源于stack exchange,提问作者Arek Jaworski
相关产品推荐
相关产品推荐

