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

AWS API Gateway WebSocket模式HTTP集成下$connect连接逻辑异常咨询

WebSocket API Gateway $connect 连接控制问题处理

我使用WebSocket模式的AWS API Gateway,采用HTTP集成(非代理模式),遇到了一个问题:我的服务针对$connect端点返回任意响应码时,API Gateway始终会与客户端建立连接。

WebSocket连接成功测试截图

但官方文档中明确说明:

在与$connect路由关联的集成执行完成之前,升级请求处于挂起状态,实际连接不会建立。如果$connect请求失败(例如,由于身份验证/授权失败或集成失败),则不会建立连接。

问题原因及解决步骤

  • 非代理集成的默认逻辑:非代理HTTP集成模式下,API Gateway不会自动根据后端返回的状态码终止连接,必须手动配置集成响应的规则来触发断开行为。
  • 配置集成响应实现断开:在API Gateway控制台的$connect路由集成响应中,为需要拒绝连接的状态码(如401、403、500等)做如下配置:
    1. 启用"终止连接"选项;
    2. 添加响应头 Connection: close;
    3. 可选:设置响应模板,返回提示客户端连接被拒绝的内容。
  • 优先使用授权器处理权限问题:如果是身份验证/授权失败场景,直接使用API Gateway的自定义授权器或IAM授权,这类失败会直接终止连接,不需要后端额外处理;如果是业务逻辑层面拒绝连接,才需要通过上述集成响应配置实现。
  • 验证测试:用wscat工具测试连接,执行命令:
    wscat -w 1 -c wss://你的API域名/你的阶段名
    
    观察后端返回错误码时,是否收到关闭帧而非成功建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:45:33