求助:无需修改遗留应用,AWS API Gateway超时问题的解决办法
解决API Gateway超时问题的AWS侧方案(无需修改遗留应用)
异步请求+SQS+Lambda组合方案
把原同步API调用改成异步流程:API Gateway接收到请求后,直接将任务消息发送到SQS队列,马上给前端返回带任务ID的响应。接着用Lambda监听SQS队列,触发调用那个慢响应的遗留API,处理完成后把结果存到DynamoDB或S3里。前端后续通过轮询另一个查询API,凭任务ID获取最终结果。这套流程完全绕开了API Gateway的30秒超时限制。用Step Functions做异步任务编排
搭建Step Functions状态机,API Gateway触发状态机启动后,由状态机去调用遗留API(Step Functions的任务超时可以设置得很长,最长支持1年),执行完成后把结果存入存储服务。前端可以通过轮询API查询状态机的执行状态和结果,也可以搭配WebSockets实现结果推送,减少轮询开销。API Gateway转发请求到EventBridge
配置API Gateway的集成请求,将请求转发到EventBridge,EventBridge再触发Lambda调用遗留API。API Gateway只要成功把事件投递到EventBridge就会返回响应,后续的慢请求处理由Lambda异步完成,结果同样存到存储服务,供前端查询获取。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

