跳至內容

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

1 分的閱讀內容
0

當我將訊息發佈到Amazon API Gateway WebSocket API 時會出現「410 GoneException」錯誤,我想對此進行疑難排解。

簡短說明

由於下列原因,您可能會收到「410 GoneException」錯誤:

  • 在建立連線之前向 WebSocket API 發佈了一則訊息
  • 連線已終止或不存在
  • 用戶端已中斷連線,然後嘗試使用相同的 connectionId 重新連線
  • connectionID 無效

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

解決方法

若要針對 WebSocket API 錯誤進行疑難排解,請開啟 Amazon CloudWatch Logs。在日誌層級,選擇 Info 以產生所有請求的執行日誌。執行日誌包含可用來識別和疑難排解大部分 API 錯誤的資訊。例如:

如需詳細資訊,請參閱 API Gateway 的 CloudWatch 日誌格式

若要建立連線,請在將訊息發佈至 WebSocket API 之前,使用 AWS SDK ApiGatewayManagementApi 呼叫 getConnection 作業。

請勿從與 $connect 路由整合的 Lambda 函數發出 postToConnection 請求。若要在建立用戶端連線之後發佈訊息,請完成以下步驟:

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

相關資訊

API Gateway 中的 WebSocket API 概觀

如何將 connectionId 或自訂權杖作為 API Gateway WebSocket API 的標頭傳遞給 VPC 連結整合?