跳至内容

如何对 API Gateway WebSocket API 连接错误进行故障排除?

1 分钟阅读
0

当我尝试连接我的 Amazon API Gateway WebSocket API 时,我收到错误。

简短描述

API Gateway WebSocket API 连接错误可能由以下原因导致:

  • 权限不足,无法向后端发出请求
  • API ID、AWS 区域和 API 阶段的字段不正确
  • 后端集成中的错误
  • AWS Identity and Access Management (IAM) 身份验证错误

解决方法

确认 WebSocket API 具有向后端发出请求所需的权限

API Gateway 使用 IAM 角色、策略、标签和 AWS Lambda Authorizer 来控制对 WebSocket API 的访问权限。要向后端发出请求,API Gateway 必须拥有这些资源的正确权限。有关详细信息,请参阅在 API Gateway 中控制和管理对 WebSocket API 的访问

此外,请确保正确配置 WebSocket API 集成请求

确认您将请求发送到正确的 API ID、区域和 API 阶段

对于您的请求,请务必验证请求信息。在以下请求 URL 示例中,确保以下字段正确无误:

wss://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/production
  • WebSocket API ID 为 a1b2c3d4e5
  • 请求的区域为 us-east-1
  • API 阶段名称 production 已存在。

检查 CloudWatch 日志中是否存在错误

要了解更多故障排除信息,请打开 Amazon CloudWatch Logs 以对 API Gateway WebSocket API 进行故障排除。如果您为后端集成 Lambda 函数,请检查 CloudWatch 日志中是否存在错误。有关详细信息,请参阅将 Lambda 函数日志发送到 CloudWatch Logs

确认 API 请求已签署

如果您为 API 方法启用 IAM 身份验证,请确保 API 请求使用签名版本 4 (SigV4) 签名。有关详细信息,请参阅创建已签名的 AWS API 请求

要为您的 API Gateway API 启用 IAM 身份验证,请完成以下步骤:

  1. API Gateway 控制台中,选择您的 Websocket API。
  2. Routes(路由)下,选择 $connect
    注意:您只能为 $connect 路由指定授权设置。Authorization(授权)设置适用于整个 API,而不仅仅是 $connect 路由。$connect 路由会保护其他路由,因为每个连接都调用 $connect 路由,$connect 路由会保护所有其他路由。
  3. Route request(路径请求)下的 Route request settings(路径请求设置)下,选择 Edit(编辑)。
  4. 对于 Authorization(授权),从下拉列表中选择 AWS IAM,然后选择 Save changes(保存更改)。
  5. 要使更改生效,请部署您的 WebSocket API

相关信息

使用 CloudWatch 指标监控 WebSocket API 执行

利用 AWS Lambda REQUEST 授权方来控制对 WebSocket API 的访问