You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS WebSocket API发送消息时返回Forbidden(403)错误求助

解决AWS API Gateway WebSocket发送消息返回Forbidden的问题
  • 核对路由与前端消息匹配规则
    确认API Gateway路由的routeKey和前端发送消息里的action字段完全一致(大小写敏感)。比如前端发送{"action": "sendMsg"},路由的routeKey就不能是SendMsg或者sendmessage,也可以直接用$default路由匹配所有未指定的消息,快速验证是否是路由匹配问题。

  • 确保API Gateway有Lambda调用权限
    检查Lambda函数的权限策略,确认存在API Gateway的调用许可。如果没有,手动添加以下权限策略(替换占位符为你的实际信息):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "apigateway.amazonaws.com"
          },
          "Action": "lambda:InvokeFunction",
          "Resource": "arn:aws:lambda:你的区域:账号ID:function:目标Lambda函数名",
          "Condition": {
            "ArnLike": {
              "AWS:SourceArn": "arn:aws:execute-api:你的区域:账号ID:你的API ID/*/*/*"
            }
          }
        }
      ]
    }
    
  • 检查前端消息格式
    必须发送标准JSON格式的消息,且包含匹配路由的字段。示例代码:

    const socket = new WebSocket('wss://你的API域名/stage');
    socket.send(JSON.stringify({ action: 'sendMessage', content: '测试消息' }));
    

    避免发送纯文本或格式错误的JSON,否则API Gateway无法匹配路由,会返回Forbidden。

  • 确认API Gateway已重新部署
    所有路由或配置修改后,必须重新部署到对应的阶段(如prod),未部署的配置不会生效。

  • 排查阶段附加的WAF或日志

    • 进入API Gateway的阶段设置,检查是否绑定了WAF Web ACL,若开启可能拦截了消息请求,可临时关闭验证。
    • 开启阶段的访问日志,日志会输出到CloudWatch,通过日志能明确Forbidden的具体原因(如路由匹配失败、权限不足等)。

内容的提问来源于stack exchange,提问作者user23887016

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:17:36