AWS WebSocket API网关配置Lambda authorizer控制台报错求助
WebSocket API Lambda授权器不触发问题排查方案
以下是该问题的高频根因和对应修复方式,按出现概率从高到低排序:
- 配置变更后未重新部署API阶段
这是90%同类问题的诱因。AWS API Gateway的所有配置修改(包括绑定授权器、调整路由规则)都不会自动生效,必须手动将配置部署到对应运行阶段(如dev/prod),未部署的配置仅存储在控制台,不会参与实际流量处理。
修复操作:进入对应WebSocket API的控制台页面,点击侧边栏「部署API」,选择目标阶段填写部署说明后确认部署,部署完成后再发起连接测试即可。 - 授权器类型或参数配置错误
WebSocket API支持的Lambda授权器只有TOKEN和REQUEST两类,不要误选REST API专属的授权器类型:- 若使用
TOKEN类型授权器,必须正确配置令牌来源(如$request.header.Authorization),如果配置的来源字段在客户端连接请求中不存在,API网关会直接拦截请求返回错误,不会触发授权器代码执行。 - 若使用
REQUEST类型授权器,需要明确配置需要传递给授权器的请求参数(请求头、查询参数、阶段变量等),未配置的参数不会传递给授权器,但不会导致授权器不触发。
- 若使用
- Lambda资源策略未放行API网关调用权限
即使你给授权器Lambda配置了足够的执行角色权限,也需要检查Lambda本身的资源策略,必须满足两个条件:- 允许服务主体
apigateway.amazonaws.com调用该Lambda函数 - 策略中的源ARN必须匹配当前WebSocket API的
$connect路由,格式参考:arn:aws:execute-api:<你的区域ID>:<你的AWS账号ID>:<你的API ID>/*/$connect
- 允许服务主体
- 路由配置覆盖或缓存异常
- 检查
$connect路由的详情页,确认路由层面没有单独配置无效的授权规则,覆盖了你绑定的Lambda授权器;同时检查阶段变量配置,确认没有错误覆盖授权器的Lambda ARN。 - 如果你之前开启了授权器缓存,可能因为历史上授权器返回的IAM策略格式不符合规范,导致网关直接拦截请求不触发新的授权调用,可以先将授权器缓存TTL设置为0,关闭缓存后再测试。
- 检查
快速定位步骤
- 完成API重新部署后,先在
$connect路由的控制台页面用内置「测试」功能发起模拟连接,查看测试返回的执行日志,会明确标注授权器是否被调用、调用失败的具体原因。 - 开启API网关的CloudWatch执行日志(日志级别设置为INFO),如果网关侧出现
Lambda authorizer invoke failed类报错,会直接标注是权限不足、配置错误还是参数缺失。 - 临时将
$connect路由的授权器设置为NONE,确认连接可以正常到达后端业务Lambda,排除路由本身的配置故障后,再重新绑定授权器测试。
内容的提问来源于stack exchange,提问作者tzvi
相关产品推荐
相关产品推荐

