Utilisation des commandes @connections dans votre service backend - APIPasserelle Amazon

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation des commandes @connections dans votre service backend

Votre service principal peut utiliser les requêtes HTTP de WebSocket connexion suivantes pour envoyer un message de rappel à un client connecté, obtenir des informations de connexion ou déconnecter le client.

Important

Ces demandes utilisent l'autorisation IAM. Vous devez donc les signer avec Signature Version 4 (SigV4). Pour ce faire, vous pouvez utiliser l'API de gestion API Gateway. Pour plus d'informations, consultez ApiGatewayManagementApi.

Dans la commande suivante, vous devez le {api-id} remplacer par l'identifiant d'API réel, affiché dans la console API Gateway ou renvoyé par la commande AWS CLI create-api. Vous devez établir la connexion avant d’utiliser cette commande.

Pour envoyer un message de rappel au client, utilisez :

POST https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Vous pouvez tester cette demande en utilisant Postman ou en appelant awscurl comme dans l'exemple suivant :

awscurl --service execute-api -X POST -d "hello world" https://{prefix}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Vous avez besoin de coder la commande en URL comme dans l'exemple suivant :

awscurl --service execute-api -X POST -d "hello world" https://aabbccddee.execute-api.us-east-1.amazonaws.com/prod/%40connections/R0oXAdfD0kwCH6w%3D

Pour obtenir le dernier état de connexion du client, utilisez :

GET https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Pour déconnecter le client, utilisez :

DELETE https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Vous pouvez générer dynamiquement une URL de rappel en utilisant les variables $context dans votre intégration. Par exemple, si vous utilisez l'intégration de proxy Lambda avec une fonction Lambda Node.js, vous pouvez générer l'URL et envoyer un message à un client connecté comme suit :

import { ApiGatewayManagementApiClient, PostToConnectionCommand, } from "@aws-sdk/client-apigatewaymanagementapi"; export const handler = async (event) => { const domain = event.requestContext.domainName; const stage = event.requestContext.stage; const connectionId = event.requestContext.connectionId; const callbackUrl = `https://${domain}/${stage}`; const client = new ApiGatewayManagementApiClient({ endpoint: callbackUrl }); const requestParams = { ConnectionId: connectionId, Data: "Hello!", }; const command = new PostToConnectionCommand(requestParams); try { await client.send(command); } catch (error) { console.log(error); } return { statusCode: 200, }; };

Lorsque vous envoyez un message de rappel, votre fonction Lambda doit être autorisée à appeler l’API de gestion d’API Gateway. Vous pouvez recevoir un message d’erreur contenant GoneException si vous publiez un message avant l’établissement de la connexion ou après la déconnexion du client.