Tutorial: crea un'app di WebSocket chat con a WebSocket API, Lambda e DynamoDB - 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à.

Tutorial: crea un'app di WebSocket chat con a WebSocket API, Lambda e DynamoDB

In questo tutorial, creerai un'applicazione di chat senza server con un. WebSocket API Con a WebSocket API, puoi supportare la comunicazione bidirezionale tra i client. I client possono ricevere messaggi senza dover eseguire il polling per gli aggiornamenti.

Il completamento di questa esercitazione richiede circa 30 minuti. Innanzitutto, utilizzerai un AWS CloudFormation modello per creare funzioni Lambda che gestiranno le API richieste, oltre a una tabella DynamoDB che memorizza il tuo client. IDs Quindi, utilizzerai la console API Gateway per crearne una WebSocket API che si integri con le tue funzioni Lambda. Infine, eseguirai un test API per verificare che i messaggi vengano inviati e ricevuti.

Panoramica architettonica di API ciò che crei in questo tutorial.

Per completare questo tutorial, sono necessari un AWS account e un AWS Identity and Access Management utente con accesso alla console. Per ulteriori informazioni, consulta Configurazione per l'utilizzo di API Gateway.

Devi anche wscat connetterti al tuoAPI. Per ulteriori informazioni, consulta Utilizzalo wscat per connetterti a un' WebSocket API e inviarle messaggi.

Fase 1: creazione di funzioni Lambda e di una tabella DynamoDB

Scarica e decomprimi il modello di creazione dell'app per AWS CloudFormation. Utilizzerai questo modello per creare una tabella Amazon DynamoDB per archiviare il client della tua app. IDs Ogni client connesso ha un ID univoco che utilizzeremo come chiave di partizione della tabella. Questo modello crea anche funzioni Lambda che aggiornano le connessioni client in DynamoDB e gestiscono l'invio di messaggi ai client connessi.

Per creare uno stack AWS CloudFormation
  1. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Scegliere Create stack (Crea stack), quindi With new resources (standard) (Con nuove risorse (standard)).

  3. In Specificare modello, scegliere Carica un file modello.

  4. Selezionare il modello scaricato.

  5. Seleziona Successivo.

  6. Per Stack name (Nome stack), inserire websocket-api-chat-app-tutorial, quindi scegliere Next (Avanti).

  7. Per Configure stack options (Configura opzioni di stack), scegliere Next (Successivo).

  8. Per quanto riguarda le funzionalità, riconosci che AWS CloudFormation puoi creare IAM risorse nel tuo account.

  9. Scegli Invia.

AWS CloudFormation fornisce le risorse specificate nel modello. Per completare il provisioning delle risorse, potrebbero essere necessari alcuni minuti. Quando lo stato del tuo AWS CloudFormation stack è CREATE_ COMPLETE, sei pronto per passare alla fase successiva.

Fase 2: Creare un WebSocket API

Creerai un file WebSocket API per gestire le connessioni client e indirizzare le richieste alle funzioni Lambda che hai creato nel passaggio 1.

Per creare un WebSocket API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli Crea API. Quindi WebSocket API, scegli Costruisci.

  3. Per APInome, inserisciwebsocket-chat-app-tutorial.

  4. Per Route selection expression (Espressione di selezione routing), inserire request.body.action. L'espressione di selezione del percorso determina il percorso che API Gateway richiama quando un client invia un messaggio.

  5. Seleziona Successivo.

  6. Per Predefined routes (Routing predefiniti), scegliere Add $connect (Aggiungi $connect), Add $disconnect (Aggiungi $disconnect) e Add $default (Aggiungi $default). Le route $connect e $disconnect sono route speciali che API Gateway richiama automaticamente quando un client si connette o si disconnette da un. API APIIl gateway richiama la route quando nessun'altra $default route corrisponde a una richiesta.

  7. Per Custom routes (Routing personalizzati), scegli Add custom route (Aggiungi routing personalizzato). Per Route key (Chiave routing), inserire sendmessage. Questo routing personalizzato gestisce i messaggi inviati ai client connessi.

  8. Seleziona Successivo.

  9. In Attach integrations (Collega integrazioni), per ogni routing eIntegration type (Tipo di integrazione), scegliere Lambda.

    Per Lambda, scegli la funzione Lambda corrispondente che hai creato nel passaggio 1. AWS CloudFormation Il nome di ciascuna funzione corrisponde a un routing. Ad esempio, per il routing $connect, scegliere la funzione denominata websocket-chat-app-tutorial-ConnectHandler.

  10. Rivedi la fase che API Gateway crea per te. Per impostazione predefinita, API Gateway crea un nome di fase production e lo distribuisce automaticamente API in quella fase. Seleziona Successivo.

  11. Scegliere Create and deploy (Crea e implementa).

Fase 3: Metti alla prova il tuo API

Successivamente, testerai il tuo API per assicurarti che funzioni correttamente. Usa il wscat comando per connetterti aAPI.

Per ottenere l'invoce URL per il tuo API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli il tuo API.

  3. Scegli Stages (Fasi), quindi scegli production (produzione).

  4. Annota API i tuoi WebSocket URL. URLDovrebbero assomigliare awss://abcdef123.execute-api.us-east-2.amazonaws.com/production.

Per connetterti al tuo API
  1. Usa il seguente comando per connetterti al tuoAPI. Quando ti connetti al tuoAPI, API Gateway richiama il $connect percorso. Quando si richiama il routing, esso richiama una funzione Lambda che archivia l'ID di connessione in DynamoDB.

    wscat -c wss://abcdef123.execute-api.us-west-2.amazonaws.com/production
    Connected (press CTRL+C to quit)
  2. Apri un nuovo terminale ed esegui nuovamente il comando wscat con i parametri seguenti.

    wscat -c wss://abcdef123.execute-api.us-west-2.amazonaws.com/production
    Connected (press CTRL+C to quit)

    Ciò fornisce due client connessi in grado di scambiare messaggi.

Per inviare un messaggio
  • APIGateway determina il percorso da richiamare in base all'espressione di selezione API del percorso dell'utente. L'espressione API di selezione del percorso dell'utente è$request.body.action. Di conseguenza, API Gateway richiama il sendmessage percorso quando si invia il seguente messaggio:

    {"action": "sendmessage", "message": "hello, everyone!"}

    La funzione Lambda associata alla route richiamata raccoglie il client da DynamoDB. IDs Quindi, la funzione chiama il API Gateway Management API e invia il messaggio a tali client. Tutti i client connessi ricevono il seguente messaggio:

    < hello, everyone!
Per richiamare la tua route API $default
  • APIGateway richiama la route predefinita API dell'utente quando un client invia un messaggio che non corrisponde ai percorsi definiti. La funzione Lambda associata alla $default route utilizza API Gateway Management API per inviare al client informazioni sulla sua connessione.

    test
    Use the sendmessage route to send a message. Your info: {"ConnectedAt":"2022-01-25T18:50:04.673Z","Identity":{"SourceIp":"192.0.2.1","UserAgent":null},"LastActiveAt":"2022-01-25T18:50:07.642Z","connectionID":"Mg_ugfpqPHcCIVA="}
Per disconnetterti dal tuo API
  • Premi CTRL+C per disconnetterti dal tuo. API Quando un client si disconnette dal tuoAPI, API Gateway richiama il tuo percorso. API $disconnect L'integrazione Lambda per il tuo $disconnect percorso rimuove l'ID API di connessione da DynamoDB.

Fase 4: pulizia

Per evitare costi non necessari, eliminare le risorse create nell'ambito di questo tutorial. I passaggi seguenti eliminano lo stack e. AWS CloudFormation WebSocket API

Per eliminare un WebSocket API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Nella APIspagina, seleziona il tuo websocket-chat-app-tutorialAPI. Scegliere Azioni, scegliere Elimina, quindi confermare la scelta.

Per eliminare una AWS CloudFormation pila
  1. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Seleziona il tuo AWS CloudFormation stack.

  3. Scegli Elimina e conferma la tua scelta.

Passaggi successivi: automatizza con AWS CloudFormation

Puoi automatizzare la creazione e la pulizia di tutte le AWS risorse coinvolte in questo tutorial. Per un AWS CloudFormation modello che crea questa API e tutte le risorse correlate, vedi ws-chat-app .yaml.