调用AWS API Gateway Websocket的$default路由遇403错误求助
问题分析与解决方案
你混淆了API Gateway的两种类型规则:你参考的是HTTP API的路由文档,但实际使用的是Websocket API,两者的
$default路由逻辑完全不同,HTTP API的$default规则不适用于Websocket API。Websocket API的
$default路由仅针对已建立连接后的消息生效,而非普通HTTPS请求。你直接发送HTTPS GET/POST请求的方式,本质是尝试调用Websocket的握手接口,而非发送Websocket消息,这种请求不会触发任何消息路由(包括$default),这就是你收到403错误的核心原因。正确触发
$default路由的方式:- 先通过WebSocket协议(
wss://你的自定义域名/阶段或wss://{api-id}.execute-api.{region}.amazonaws.com/{stage})建立连接; - 连接建立后,在连接内发送包含
action字段的JSON格式消息,当action值不匹配任何已定义路由时,请求才会转发到$default路由对应的Lambda函数。
- 先通过WebSocket协议(
额外排查方向:
- 如果握手阶段出现403,检查自定义域名的SSL证书是否有效、API Gateway阶段是否正确部署、是否启用了IAM认证但请求未携带合法凭证;
- 如果是消息发送阶段的问题,确认消息体的
action字段位置是否符合路由配置(你设置的是$request.body.action,所以消息体必须是标准JSON且包含该字段)。
内容的提问来源于stack exchange,提问作者rpoddar195
相关产品推荐
相关产品推荐

