AWS::ApiGatewayV2::Api WebSocket未设授权却返回INVALID_API_KEY错误
解决方案
从日志中的routeKey":"-"可以明确:API Gateway未匹配到你定义的authenticate路由,这才是触发INVALID_API_KEY错误的根本原因(该错误信息在路由不匹配场景下具有误导性,并非真的存在API Key配置)。
核心问题:消息格式不匹配路由选择规则
你的WebSocket API配置的路由选择表达式是$request.body.action,这要求发送的消息必须是合法JSON格式,且包含顶级action字段,值为authenticate,例如:
{"action": "authenticate"}
而你发送的action=authenticate是表单格式,API Gateway无法解析出request.body.action的值,因此找不到对应路由,触发默认的访问拦截逻辑,返回403错误。
额外检查项
- 确认消息格式与路由匹配:确保发送的WebSocket消息是标准JSON,
action字段值与路由的RouteKey完全一致(区分大小写)。 - 验证SAM部署后的实际配置:登录AWS控制台查看WebSocket API的路由详情,确认
authenticate路由的AuthorizationType确实是NONE,且API级别未强制启用API Key要求。 - 检查路由选择表达式:如果消息体是嵌套结构,需调整
RouteSelectionExpression以匹配实际字段路径(你的当前配置是匹配顶级action字段,无需修改)。
内容的提问来源于stack exchange,提问作者JobaDiniz
相关产品推荐
相关产品推荐

