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.
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.
Argomenti
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
Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Scegliere Create stack (Crea stack), quindi With new resources (standard) (Con nuove risorse (standard)).
-
In Specificare modello, scegliere Carica un file modello.
-
Selezionare il modello scaricato.
-
Seleziona Successivo.
-
Per Stack name (Nome stack), inserire
websocket-api-chat-app-tutorial
, quindi scegliere Next (Avanti). -
Per Configure stack options (Configura opzioni di stack), scegliere Next (Successivo).
-
Per quanto riguarda le funzionalità, riconosci che AWS CloudFormation puoi creare IAM risorse nel tuo account.
-
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
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegli Crea API. Quindi WebSocket API, scegli Costruisci.
-
Per APInome, inserisci
websocket-chat-app-tutorial
. -
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. -
Seleziona Successivo.
-
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. -
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. -
Seleziona Successivo.
-
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
. -
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. -
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
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegli il tuo API.
-
Scegli Stages (Fasi), quindi scegli production (produzione).
-
Annota API i tuoi WebSocket URL. URLDovrebbero assomigliare a
wss://
.abcdef123
.execute-api.us-east-2
.amazonaws.com/production
Per connetterti al tuo API
-
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/productionConnected (press CTRL+C to quit)
-
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/productionConnected (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 ilsendmessage
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
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Nella APIspagina, seleziona il tuo
websocket-chat-app-tutorial
API. Scegliere Azioni, scegliere Elimina, quindi confermare la scelta.
Per eliminare una AWS CloudFormation pila
Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Seleziona il tuo AWS CloudFormation stack.
-
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.