跳至內容

如何對 API Gateway WebSocket API 連線錯誤進行疑難排解?

2 分的閱讀內容
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 階段

對於您的請求,請確保已驗證請求資訊。在以下範例請求網址中,請確保以下欄位正確:

wss://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/production
  • WebSocket API ID 為 a1b2c3d4e5
  • 請求的區域為 us-east-1
  • API stage (API 階段) 名稱 production (生產) 已存在。

查看 CloudWatch 日誌中的錯誤

如需更多疑難排解資訊,請開啟 Amazon CloudWatch 日誌以對 API Gateway WebSocket API 進行疑難排解。如果將 Lambda 函式整合為後端,請檢查 CloudWatch 日誌中的錯誤。如需更多資訊,請參閱將 Lambda 函式日誌傳送到 CloudWatch Logs

確認 API 請求已簽署

如果您為 API 方法啟用了 IAM 驗證,請確保 API 請求使用第 4 版簽署程序 (SigV4) 簽署。如需更多資訊,請參閱建立已簽署的 AWS API 請求

若要為您的 API Gateway API 啟用 IAM 驗證,請完成以下步驟:

  1. API Gateway console (API Gateway 主控台) 中,選取您的 WebSocket API。
  2. Routes (路由) 下,選擇 $connect
    注意:您只能為 $connect route ($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 的存取權