API Gateway WebSocket路由选择不生效 消息始终匹配$default路由
排查解决步骤
- 重新部署API到对应阶段
修改路由选择表达式、新增自定义路由后,必须重新将API部署到你调用的dev阶段才会生效:进入API Gateway控制台→选择你的WebSocket API→点击右上角「部署API」→选择dev阶段并确认部署,等待1-2分钟后再测试。
这是该问题最高发的原因,绝大多数场景下部署后即可正常匹配test路由。
- 重新部署API到对应阶段
- 核对自定义路由配置
检查test路由的路由键是否完全为test,没有多余空格、大小写错误,路由状态为已启用,集成配置正常绑定了目标Lambda函数;同时确认路由选择表达式确实为$request.body.action,和请求体中的action字段大小写完全匹配(API Gateway字段解析大小写敏感)。
- 核对自定义路由配置
- 关闭请求体验证测试
如果为test路由配置了请求体验证规则,临时关闭验证后重新测试,避免验证失败导致请求被转发到$default路由。
- 关闭请求体验证测试
- 验证网关对请求体的解析能力
在绑定的Lambda函数中新增日志打印逻辑:
exports.handler = async (event) => { console.log('解析到的action值:', JSON.parse(event.body).action) // 原有逻辑 }调用后查看CloudWatch日志,如果输出为
test,说明网关可以正常解析请求体,问题一定出在路由相关配置未生效;如果输出为空或undefined,检查是否配置了请求体转换规则篡改了原始请求内容。- 验证网关对请求体的解析能力
内容的提问来源于stack exchange,提问作者Salim Shamim
相关产品推荐
相关产品推荐

