如何将EC2部署的WebSocket服务映射到AWS WebSocket API Gateway
EC2 WebSocket服务映射到API Gateway配置方案
该需求可通过API Gateway的WebSocket API配合自定义域名路径映射实现,完全满足隐藏EC2公网IP、统一API入口的要求,具体操作如下:
1. 前置校验
- 确认EC2上的WebSocket服务运行正常,可通过
ws://<EC2公网IP>:<端口>/<服务路径>正常建立连接 - 记录服务监听端口、路径,调整EC2安全组入站规则,允许对应端口的访问请求(后续可配置为仅允许API Gateway网段访问,进一步收敛权限)
2. 创建WebSocket API
登录AWS控制台进入API Gateway服务,选择创建WebSocket API,按提示填写API名称、描述,完成初始创建。
3. 配置后端集成
- 进入已创建的WebSocket API的「路由」页面,配置3个默认路由:
$connect、$disconnect、$default - 每个路由的集成类型选择「HTTP」,如果你的WebSocket服务没有开启TLS,后端端点填
http://<EC2公网IP>:<端口>/<服务路径>;如果已开启TLS则填https://<EC2公网IP>:<端口>/<服务路径>(注意API Gateway后端集成填HTTP/HTTPS前缀即可,无需写ws/wss) - 保存所有路由的集成配置,开启请求传递,确保WebSocket握手、帧数据都能正常透传到EC2服务
4. 部署API并测试
- 选择「部署API」,指定部署阶段(如prod、test),部署完成后可获取到API Gateway默认的WebSocket访问地址:
wss://<API ID>.execute-api.<区域>.amazonaws.com/<阶段名> - 用WebSocket客户端测试该地址,确认可以正常建立连接、收发数据
5. 统一API入口配置
如果需要和现有HTTP API使用同一个调用域名,按以下操作配置:
- 在API Gateway的「自定义域名」页面,绑定你已在使用的统一API域名(需提前配置SSL证书)
- 添加路径映射规则:将
/ws(或你自定义的WebSocket路径前缀)映射到上述WebSocket API的对应部署阶段,其余路径映射到原有HTTP/REST API的部署阶段 - 配置完成后,即可通过统一域名访问所有服务:普通HTTP接口使用原路径,WebSocket服务使用
wss://<统一域名>/ws路径
注意事项
- 如需完全隐藏EC2公网IP,可将EC2部署在私有子网,配置VPC Link实现API Gateway到私有子网EC2的内网访问,无需给EC2分配公网IP
- 可根据业务需求调整API Gateway的WebSocket连接超时、消息大小限制、限流等参数
- 后续可在API Gateway层配置权限校验、监控告警等能力,无需修改EC2上的WebSocket服务代码
内容的提问来源于stack exchange,提问作者Saurabh Singh
相关产品推荐
相关产品推荐

