如何在AWS API Gateway中配置带前置认证令牌的HTTP代理集成?
无需Lambda的AWS API Gateway代理前置认证方案
针对你要为上百个外部API配置代理、且需先调用认证API拿令牌的需求,有两个完全不需要编写Lambda代码的配置方案:
方案1:令牌缓存+HTTP代理集成(推荐批量高并发场景)
这个方案通过提前缓存令牌,避免每次请求都调用认证API,效率更高:
- 用CloudWatch Events(事件桥)设置定时任务,定期调用认证API获取最新令牌,把令牌存入AWS Systems Manager Parameter Store(或Secrets Manager)
- 在API Gateway的HTTP代理集成的「集成请求」里,配置请求头映射:
- 添加主API需要的认证头(比如
Authorization),值选择从Parameter Store读取对应的令牌参数 - 批量配置时,直接用CloudFormation模板批量替换主API地址和令牌参数路径即可
- 添加主API需要的认证头(比如
方案2:实时令牌获取的集成链(适合短有效期令牌)
如果令牌有效期极短不能提前缓存,可通过API Gateway的集成串联实现实时获取:
- 先创建一个非代理HTTP集成指向认证API,配置好获取令牌的请求参数(比如带固定认证密钥的POST请求)
- 在这个集成的「集成响应」里,把返回的令牌提取到API Gateway的上下文变量(比如
$context.vars.authToken) - 再创建HTTP代理集成指向主API,在其「集成请求」的请求头映射中,把上下文变量里的令牌映射到主API的认证头
- 最后把两个集成通过API Gateway的资源方法串联,让请求先触发认证集成拿令牌,再调用主API
批量配置建议
针对上百个API的场景,强烈用CloudFormation模板或AWS CDK做参数化配置,把主API地址、认证API地址、认证头名称这些做成参数,批量生成API Gateway资源和集成,不用手动一个个配置。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

