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

如何在AWS API Gateway下为FastAPI应用保留外部认证并支持SSE?

解决方案

1. 配置API Gateway适配SSE流式传输

  • 启用流式响应模式
    • 若使用HTTP API:在集成设置中开启流式响应,将响应的Content-Type设置为text/event-stream,此时API Gateway不会自动添加Content-Length头部,会以分块方式转发响应
    • 若使用REST API:将集成的内容处理设置为PASSTHROUGH(不修改响应),在方法响应中指定Content-Type为text/event-stream,且不配置Content-Length头部
  • 关闭响应缓冲:在API Gateway的阶段配置中,禁用响应缓冲,确保后端生成的响应块能实时转发给客户端

2. 调整超时时间适配长时SSE响应

  • API Gateway侧:将超时时间调整至最大支持值(HTTP API和REST API最大均为900秒/15分钟),在阶段设置中修改超时参数
  • ALB侧:同步调整ALB的超时时间(默认60秒),避免ALB提前断开与后端服务的连接,导致API Gateway触发超时

3. 迁移认证层至ALB(绕过API Gateway的流式限制)

  • 使用ALB的OIDC认证功能,对接你的身份提供商(如AWS Cognito、Auth0等),由ALB完成请求认证,无需通过API Gateway
  • 配置ALB的转发规则,确保text/event-stream类型的请求直接转发至FastAPI服务,同时确认ALB的分块传输功能处于开启状态(默认开启)
  • 此方式无需修改应用代码,认证逻辑在负载均衡层完成,完全支持SSE流式传输

4. 验证后端服务的流式配置正确性

  • 确保FastAPI的SSE端点正确设置media_type="text/event-stream",返回StreamingResponse对象,且未添加额外的缓冲逻辑
  • 检查Gunicorn与Uvicorn配置:Uvicorn worker添加--forwarded-allow-ips='*'参数以正确处理代理头部;Gunicorn设置--timeout为足够大的值(如300秒),避免后端提前终止连接

内容的提问来源于stack exchange,提问作者Zilberman Rafael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:15