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

如何自动断开AWS API Gateway WebSocket?设置5分钟连接时长方案

AWS API Gateway WebSocket 5分钟自动断开的轻量解决方案

方案1:连接时预约异步断开任务(最推荐)

不用复杂的Step Functions,每个连接单独处理,资源消耗低:

  • 在$connect路由的Lambda里,连接成功后:
    1. 记下当前的connectionId。
    2. 用AWS SDK创建一个单次EventBridge调度任务,设置5分钟后触发,目标是一个专门负责断开连接的Lambda。调度任务的Payload里传入connectionId。
    3. 断开Lambda的逻辑极简:调用API Gateway的DeleteConnection接口,传入目标connectionId即可。
  • 权限要配好:断开Lambda需要execute-api:DeleteConnection权限;创建调度任务的Lambda需要events:PutSchedule权限。

方案2:客户端主动断开+服务端兜底

依赖客户端配合,实现最快且零额外服务成本:

  • 客户端连接WebSocket后,启动5分钟定时器,到期主动关闭连接(或者发送断开请求到服务端)。
  • 服务端在处理消息的路由(比如$default或自定义消息路由)里,每次收到请求时,从DynamoDB(连接建立时存过连接时间)取出该连接的创建时间,若超过5分钟,直接调用DeleteConnection断开,防止客户端逻辑失效。

方案3:定时扫描DynamoDB(适合小流量场景)

如果连接量不大,这个方案最易上手:

  • $connect时把connectionId和当前时间戳写入DynamoDB表。
  • 创建CloudWatch Events规则,每分钟触发一次Lambda,扫描DynamoDB中所有超过5分钟的连接记录,逐个调用DeleteConnection断开。
  • 给扫描Lambda配置DynamoDB读取权限和API Gateway删除权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:03:10