Comment puis-je résoudre les erreurs 410 GoneException avec les API WebSocket Amazon API Gateway ?

Lecture de 2 minute(s)
0

Je souhaite résoudre les erreurs « 410 GoneException » lorsque je publie un message sur mon API WebSocket Amazon API Gateway.

Brève description

L'erreur « 410 GoneException » peut s'afficher pour les raisons suivantes :

  • Un message a été publié sur l'API WebSocket avant l'établissement de la connexion
  • La connexion a été interrompue ou n'existe pas
  • Le client s'est déconnecté, puis a essayé de se reconnecter en utilisant le même connectionId
  • Le ConnectionID n'est pas valide

Remarque : Pour les API WebSocket, le connectionId est nécessaire pour envoyer une réponse de rappel depuis le backend.

Résolution

Pour résoudre les erreurs d'API WebSocket, activez Amazon CloudWatch Logs. Pour Niveau de journalisation, sélectionnez Informations pour générer des journaux d'exécution pour toutes les requêtes. Les journaux d’exécution contiennent des informations que vous pouvez utiliser pour identifier et résoudre la plupart des erreurs d’API. Exemple :

Pour plus d’informations, consultez la section Formats de journal CloudWatch pour API Gateway.

Pour établir votre connexion, utilisez le SDK AWS ApiGatewayManagementApi pour appeler l'opération getConnection avant de publier des messages sur les API WebSocket.

N'effectuez pas la requête postToConnection à partir de la fonction Lambda intégrée à votre route $connect. Pour publier un message une fois la connexion client établie, procédez comme suit :

  1. Créez une fonction Lambda enfant qui est invoquée de manière asynchrone par la fonction parent.
  2. Établissez une nouvelle connexion. Ensuite, la route $connect est invoquée et la fonction parent invoque la fonction enfant en transmettant le connectionId.
  3. La fonction enfant Lambda reçoit le connectionId et appelle l'opération getConnection pour vérifier que la connexion est valide.
  4. Envoyez un message à l'aide de la méthode postToConnection.

Informations connexes

Présentation des API WebSocket dans API Gateway

Comment puis-je transmettre un connectionId ou un jeton personnalisé à l'intégration de lien VPC en tant qu'en-tête pour les API WebSocket API Gateway ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un mois