Wie kann ich „410 GoneException“-Fehler mit WebSocket-APIs von Amazon API Gateway beheben?

Lesedauer: 2 Minute
0

Bei dem Versuch eine Nachricht an meine WebSocket-API von Amazon API Gateway zu senden, erhalte ich den Fehler „410 GoneException“, mit einer Nachricht, die der folgenden ähnelt: ... „errorMessage“: „GoneException: 410" ... Wie kann ich dies beheben?

Kurzbeschreibung

Möglicherweise wird der Fehler „410 GoneException“ angezeigt, wenn:

  • Eine Nachricht an die WebSocket-API gesendet wurde, bevor die Verbindung hergestellt wurde.
  • Die Verbindung beendet wurde oder die Verbindung nicht mehr existiert.
  • Der Client die Verbindung getrennt hat und dann versucht hat, die Verbindung mit derselben connectionId erneut herzustellen.

Hinweis: Für WebSocket-APIs ist die connectionId erforderlich, um eine Callback-Antwort vom Backend zu senden.

Behebung

Aktivieren Sie Amazon CloudWatch Logs, um WebSocket-API-Fehler zu beheben.

Hinweis: Wählen Sie für Protokollebene INFO aus, um Ausführungsprotokolle für alle Anforderungen zu generieren.

Ausführungsprotokolle enthalten Informationen, mit denen Sie die meisten API-Fehler identifizieren und beheben können. Beispiel:

Weitere Informationen zu den einzelnen Protokollierungsarten finden Sie unter CloudWatch-Protokollformate für API Gateway.

Bevor Sie Nachrichten an WebSocket-APIs senden, stellen Sie sicher, dass Ihre Verbindung hergestellt wurde, indem Sie den Vorgang getConnection mithilfe der AWS-SDK ApiGatewayManagementApi aufrufen.

Vermeiden Sie die Anforderung postToConnection über die Lambda-Funktion, die in Ihre $connect-Route integriert ist. Wenn Sie beispielsweise eine Nachricht senden möchten, nachdem die Client-Verbindung hergestellt wurde, gehen Sie wie folgt vor:

  1. Erstellen Sie eine untergeordnete Lambda-Funktion, die asynchron von der übergeordneten Funktion aufgerufen wird.
  2. Beim Initiieren einer neuen Verbindung wird die $connect-Route aufgerufen und die übergeordnete Funktion ruft die untergeordnete Funktion ab, welche die connectionId weitergibt.
  3. Die untergeordnete Lambda-Funktion empfängt die connectionId und ruft den Vorgang getConnection auf, um zu überprüfen, ob die Verbindung gültig ist. Anschließend wird die Nachricht mit der Methode postToConnection gesendet.

Ähnliche Informationen

Über WebSocket-APIs in API Gateway

Wie kann ich eine connectionId oder ein benutzerdefiniertes Token an die VPC-Link-Integration als Header für WebSocket-APIs von Amazon API Gateway übermitteln?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr