如何通过CloudFront特定路径调用API Gateway及问题排查
一、解决无法添加API Gateway作为CloudFront源的问题
- 区分API Gateway类型:CloudFront控制台的源选择列表仅显示边缘优化型(Edge-Optimized)的API Gateway。如果你的API是区域型(Regional),需要手动添加自定义源:
- 在CloudFront源配置中选择「自定义源」
- 输入API Gateway的区域域名(格式类似
xxx.execute-api.us-east-1.amazonaws.com,可从API Gateway控制台的「阶段」页面获取) - 端口选择
443,协议选择HTTPS
- 配置访问权限:
- 推荐使用Origin Access Control(OAC):在CloudFront中创建OAC,关联到API Gateway源,然后在API Gateway的资源策略中添加允许OAC访问的规则
- 若使用区域型API,也可以直接在资源策略中允许CloudFront的分发ARN访问
二、跨域Cookie问题的最终整合方案
当API Gateway通过CloudFront特定路径提供服务后,按以下步骤确保代理认证器的Cookie正常工作:
- CloudFront行为配置:
- 创建对应路径(如
/api/*)的行为规则 - 在「缓存键和源请求」中,设置转发Cookie为「所有」(或指定代理认证器依赖的Cookie名称)
- 转发必要的请求头,至少包含
Host、X-Forwarded-For、X-Forwarded-Proto
- 创建对应路径(如
- Cookie域名统一:将代理认证器生成的Cookie的
Domain设置为CloudFront的域名somethingelse.com,Path设置为/api/*(或根路径/) - CORS适配:
- 若前端直接请求CloudFront域名,确保API Gateway的CORS配置允许
somethingelse.com作为源 - 也可在CloudFront的响应头策略中添加
Access-Control-Allow-Origin等CORS头,统一处理跨域
- 若前端直接请求CloudFront域名,确保API Gateway的CORS配置允许
内容的提问来源于stack exchange,提问作者brightstar2100
相关产品推荐
相关产品推荐

