如何使用 Amazon API Gateway WebSocket API 對 410 GoneException 錯誤進行疑難排解?

1 分的閱讀內容
0

當我嘗試將訊息發佈至 Amazon API Gateway WebSocket API 時,出現 "410 GoneException" 錯誤,類似於以下內容: ... "errorMessage":"GoneException: 410" ... 如何對此問題進行疑難排解?

簡短描述

如果出現以下情況,您可能會收到 "410 GoneException" 錯誤:

  • 在建立連線之前,訊息已發佈至 WebSocket API。
  • 連線已終止,或連線不再存在。
  • 用戶端已中斷連線,然後嘗試使用相同的 connectionId 重新連線。

**注意:**對於 WebSocket API,需要 connectionId 才能從後端傳送回呼回應。

解決方案

若要對 WebSocket API 錯誤進行疑難排解,請開啟 Amazon CloudWatch Logs

**注意:**針對 Log level (日誌層級),請選擇 INFO 以產生所有請求的執行日誌。

執行日誌包含可用來識別和疑難排解大部分 API 錯誤的資訊。例如:

如需有關每種日誌記錄類型的詳細資訊,請參閱 API Gateway 的 CloudWatch 日誌格式

在將訊息發佈至 WebSocket API 之前,確保透過使用 AWS SDK ApiGatewayManagementApi 呼叫 getConnection 操作來建立您的連線。

避免透過與 $connect 路由整合的 Lambda 函數發出 postToConnection 請求。例如,如果您要在建立用戶端連線之後發佈訊息,請執行下列動作:

  1. 建立由父函數非同步叫用的子 Lambda 函數。
  2. 在啟動新連線時,將調用 $connect 路由,並且父函數調用傳遞 connectionId 的子函數。
  3. Lambda 子函數會接收 connectionId,並呼叫 getConnection 操作,以驗證連線是否有效。然後,會使用 postToConnection 方法傳送訊息。

相關資訊

關於 API Gateway 中的 WebSocket API

如何將 connectionId 或自訂字符作為 Amazon API Gateway WebSocket API 的標題傳送至 VPC 連結整合?

AWS 官方
AWS 官方已更新 1 年前