Utilizzo di comandi @connections nel servizio di back-end - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di comandi @connections nel servizio di back-end

Il servizio di backend può utilizzare le seguenti richieste HTTP di WebSocket connessione per inviare un messaggio di callback a un client connesso, ottenere informazioni sulla connessione o disconnettere il client.

Importante

Queste richieste utilizzano l’autorizzazione IAM, pertanto occorre firmarle con Signature Version 4 (SigV4). Per eseguire questa operazione, puoi utilizzare l'API di gestione di API Gateway. Per ulteriori informazioni, consulta. ApiGatewayManagementApi

Nel comando seguente, è necessario sostituirlo {api-id} con l'ID API effettivo, che viene visualizzato nella console API Gateway o restituito dal comando AWS CLI create-api. È necessario stabilire la connessione prima di utilizzare questo comando.

Per inviare un messaggio di callback al client, utilizza:

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

Puoi testare questa richiesta utilizzando Postman o chiamando awscurl come nell'esempio seguente:

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

Il comando deve essere codificato tramite URL come nell'esempio seguente:

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

Per ottenere l'ultimo stato di connessione del client, utilizza:

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

Per scollegare il client, utilizza:

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

Puoi creare dinamicamente un URL di callback utilizzando le variabili $context nell'integrazione. Ad esempio, se si utilizza un'integrazione proxy Lambda con una funzione Lambda Node.js, puoi creare l'URL e inviare un messaggio a un client connesso come segue:

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, }; };

Quando si invia un messaggio di callback, la funzione Lambda deve disporre dell'autorizzazione per chiamare l'API di gestione di Gateway API. Se pubblichi un messaggio prima che venga stabilita la connessione o dopo la disconnessione del client, potresti ricevere un errore contenente GoneException.