You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为CloudFront+API Gateway后的Lambda签名AWS SigV4请求?

解决方案

方法1:将CloudFront域名配置为API Gateway的自定义域名

  1. 在API Gateway控制台中,为目标API添加自定义域名john.dev.project.io,关联对应的API部署阶段。
  2. 修改CloudFront的源地址,将原来的api.dev.project.io替换为API Gateway自定义域名对应的访问地址。
  3. 前端请求时,直接基于john.dev.project.io生成AWS签名,此时请求的Host头与API Gateway期望的一致,签名验证可正常通过。

方法2:配置CloudFront转发原始Host头并开放API Gateway域名白名单

  1. 创建CloudFront的Origin Request Policy,确保转发请求的Host头(可选择包含Host的预设策略,或自定义策略添加Host字段)。
  2. 在API Gateway的API设置页面,将john.dev.project.io添加到允许的域名列表中,让API Gateway接受该Host头的请求。
  3. 前端基于john.dev.project.io生成签名,CloudFront将原始Host头转发给API Gateway,此时签名计算的Host与API Gateway接收的Host匹配,验证通过。

方法3:让CloudFront作为中间层处理IAM认证(适用于复杂架构)

  1. 为CloudFront配置Lambda@Edge函数,在请求到达时验证前端的AWS签名。
  2. 为CloudFront的Origin Access Identity(OAI)或关联的IAM角色授予访问目标API Gateway的权限。
  3. 前端对CloudFront域名生成签名,CloudFront验证通过后,用自身权限访问API Gateway,此时API Gateway只需信任CloudFront的请求,无需直接验证前端签名。

关键注意点

  • AWS签名计算必须包含请求的实际Host头,因此前端签名的目标域名必须与API Gateway最终接收的Host头一致。
  • 浏览器无法修改Host头,必须通过架构调整让前端请求域名与API Gateway认可的Host头匹配,或通过代理层转发逻辑对齐两者。

内容的提问来源于stack exchange,提问作者Emile Haas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:54:15