Ich möchte den Fehler „410 GoneException“ beheben, wenn ich eine Nachricht an meine Amazon API Gateway WebSocket-API sende.
Kurzbeschreibung
Möglicherweise erhältst du den Fehler „410 GoneException“ aus den folgenden Gründen:
- Eine Nachricht wurde an die WebSocket-API gesendet, bevor die Verbindung hergestellt wurde
- Die Verbindung wurde beendet oder besteht nicht
- Der Client hat die Verbindung getrennt und dann versucht, mit derselben connectionId erneut eine Verbindung herzustellen
- Die connectionID ist nicht gültig
Hinweis: Für WebSocket-APIs ist die connectionId erforderlich, um eine Rückrufantwort vom Backend zu senden.
Lösung
Um WebSocket-API-Fehler zu beheben, aktiviere Amazon CloudWatch Logs. Wähle unter Protokollstufe die Option Info aus, um Ausführungsprotokolle für alle Anforderungen zu generieren. Ausführungsprotokolle enthalten Informationen, mit denen du die meisten API-Fehler identifizieren und beheben kannst. Zum Beispiel:
Weitere Informationen findest du unter CloudWatch-Protokollformate für API Gateway.
Um die Verbindung herzustellen, verwende die AWS-SDK-ApiGatewayManagementApi, um die Operation getConnection aufzurufen, bevor du Nachrichten an WebSocket-APIs sendest.
Stelle die postToConnection-Anforderung nicht über die Lambda-Funktion, die in deine $connect-Route integriert ist. Gehe wie folgt vor, um eine Nachricht zu posten, nachdem die Client-Verbindung hergestellt wurde:
- Erstelle eine untergeordnete Lambda-Funktion, die asynchron von der übergeordneten Funktion aufgerufen wird.
- Initiiere eine neue Verbindung. Dann wird die $connect-Route aufgerufen und die übergeordnete Funktion ruft die untergeordnete Funktion auf, die die connectionId übergibt.
- Die untergeordnete Lambda-Funktion empfängt die connectionId und ruft die Operation getConnection auf, um zu überprüfen, ob die Verbindung gültig ist.
- Sende eine Nachricht mithilfe der postToConnection-Methode.
Ähnliche Informationen
Überblick über WebSocket-APIs in API Gateway
Wie übergebe ich eine connectionId oder ein benutzerdefiniertes Token an die VPC-Link-Integration als Header für API Gateway WebSocket-APIs?