CloudFront转发API Gateway请求产生额外延迟,寻求优化方案
API Gateway经CloudFront转发后延迟升高的优化方案
问题背景
直接调用区域型API Gateway端点或其自定义域名时,响应时间约300ms:
- 调用
https://xxxxxx.execute-api.us-west-2.amazonaws.com/stage/api/users,响应时间约300ms - 使用自定义域名
https://api.myexample.com/api/users调用,响应时间约300ms
Web应用通过CloudFront + S3部署在https://myexample.com,为解决跨域资源共享(CORS)问题,在CloudFront中新增指向API Gateway的源,配置/api/*行为规则转发请求,此时调用https://myexample.com/api/users(转发至上述API Gateway端点),响应时间约800ms,CloudFront额外增加了500ms延迟。
优化方法
改用API Gateway边缘优化型端点
区域型API Gateway部署在指定区域(us-west-2),CloudFront边缘节点到该区域的跨网络链路会产生额外延迟。切换为边缘优化型端点后,API Gateway会在CloudFront边缘节点部署接入层,请求先到达就近边缘节点,再通过AWS内部优化链路转发到后端API,大幅缩短跨区域传输耗时。优化CloudFront缓存与源配置
- 针对动态API(如用户数据接口),配置精准的缓存键和TTL规则,避免CloudFront误缓存或无效回源,同时不要强制缓存动态内容。
- 启用CloudFront的Origin Shield:在API Gateway所在的us-west-2区域配置Origin Shield作为中间层,减少直接回源次数,利用AWS内部网络优化传输效率。
- 调整源连接参数:增大CloudFront到API Gateway的源连接数、缩短连接超时时间,减少TCP连接建立带来的延迟。
调整CORS解决逻辑,绕过CloudFront转发
- 在API Gateway直接配置CORS规则,允许
https://myexample.com作为跨域源,这样Web应用可直接调用API的自定义域名https://api.myexample.com/api/users,彻底规避CloudForward带来的额外延迟。 - 若必须通过主域名调用,可考虑在S3静态页面中借助Lambda@Edge实现反向代理,但该方式复杂度较高,优先推荐直接在API Gateway配置CORS。
- 在API Gateway直接配置CORS规则,允许
匹配CloudFront与API Gateway的区域路由
确认CloudFront的默认缓存区域与API Gateway所在的us-west-2区域尽可能接近,或通过路由策略选择更优的边缘节点,减少跨区域跳转的延迟损耗。
内容的提问来源于stack exchange,提问作者Abhijeet Ahuja
相关产品推荐
相关产品推荐

