Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Erstellen Sie eine WebSocket Chat-App mit a WebSocket API, Lambda und DynamoDB
In diesem Tutorial erstellen Sie eine serverlose Chat-Anwendung mit einem. WebSocket API Mit a WebSocket API können Sie die bidirektionale Kommunikation zwischen Clients unterstützen. Kunden können Nachrichten erhalten, ohne Updates abfragen zu müssen.
Dieses Tutorial nimmt ungefähr 30 Minuten in Anspruch. Zunächst verwenden Sie eine AWS CloudFormation Vorlage, um Lambda-Funktionen zu erstellen, die API Anfragen verarbeiten, sowie eine DynamoDB-Tabelle, in der Ihr Client gespeichert wird. IDs Anschließend erstellen Sie mit der API Gateway-Konsole eine, WebSocket API die in Ihre Lambda-Funktionen integriert ist. Abschließend testen Sie Ihren, API um sicherzustellen, dass Nachrichten gesendet und empfangen werden.
Um dieses Tutorial abzuschließen, benötigen Sie ein AWS Konto und einen AWS Identity and Access Management Benutzer mit Konsolenzugriff. Weitere Informationen finden Sie unter Für die Verwendung von API Gateway einrichten.
Sie müssen wscat
sich auch mit Ihrem verbindenAPI. Weitere Informationen finden Sie unter Wird verwendetwscat, um eine Verbindung zu einer WebSocket API herzustellen und Nachrichten an diese zu senden.
Themen
Schritt 1: Erstellen von Lambda-Funktionen und einer DynamoDB-Tabelle
Laden Sie die Vorlage zur App-Erstellung für AWS CloudFormation herunter und entpacken Sie sie. Sie verwenden diese Vorlage, um eine Amazon DynamoDB-Tabelle zu erstellen, in der der Client Ihrer App gespeichert wird. IDs Jeder verbundene Client hat eine eindeutige ID, die wir als Partitionsschlüssel der Tabelle verwenden werden. Diese Vorlage erstellt auch Lambda-Funktionen, die Ihre Client-Verbindungen in DynamoDB aktualisieren und das Senden von Nachrichten an verbundene Clients verarbeiten.
Um einen Stack zu erstellen AWS CloudFormation
Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie Stack erstellen und dann Mit neuen Ressourcen (Standard) aus.
-
Wählen Sie unter Vorlage angeben die Option Vorlagendatei hochladen aus.
-
Wählen Sie die Vorlage aus, die Sie heruntergeladen haben.
-
Wählen Sie Weiter aus.
-
Geben Sie für Stack-Name die Zeichenfolge
websocket-api-chat-app-tutorial
ein und klicken Sie auf Weiter. -
Wählen Sie in Stack-Optionen konfigurieren die Option Weiter aus.
-
Bestätigen Sie bei Funktionen, dass IAM Ressourcen in Ihrem Konto erstellt werden AWS CloudFormation können.
-
Wählen Sie Absenden aus.
AWS CloudFormation stellt die in der Vorlage angegebenen Ressourcen bereit. Die Bereitstellung der Ressourcen kann einige Minuten dauern. Wenn der Status Ihres AWS CloudFormation Stacks CREATE_ istCOMPLETE, können Sie mit dem nächsten Schritt fortfahren.
Schritt 2: Erstellen Sie ein WebSocket API
Sie erstellen eine WebSocket API, um Client-Verbindungen zu verarbeiten und Anfragen an die Lambda-Funktionen weiterzuleiten, die Sie in Schritt 1 erstellt haben.
Um eine zu erstellen WebSocket API
Melden Sie sich unter https://console.aws.amazon.com/apigateway
bei der API Gateway-Konsole an. -
Wählen Sie Create API. Wählen Sie WebSocket APIdann für Build.
-
Geben Sie als APINamen ein
websocket-chat-app-tutorial
. -
Geben Sie in Route selection expression (Ausdruck für die Routenauswahl)
request.body.action
ein. Der Routenauswahlausdruck bestimmt die Route, die API Gateway aufruft, wenn ein Client eine Nachricht sendet. -
Wählen Sie Next (Weiter) aus.
-
Wählen Sie in Predefined routes (Vordefinierte Routen) die Optionen Add $connect ($connect hinzufügen), Add $disconnect ($disconnect hinzufügen) und Add $default ($default hinzufügen) aus. Die Routen $connect und $disconnect sind spezielle Routen, die API Gateway automatisch aufruft, wenn ein Client eine Verbindung zu einem herstellt oder die Verbindung zu einem trennt. API APIGateway ruft die
$default
Route auf, wenn keine anderen Routen mit einer Anfrage übereinstimmen. -
Wählen Sie in Custom routes (Benutzerdefinierte Routen) Add custom route (Benutzerdefinierte Route hinzufügen) aus. Geben Sie in Route key (Routenschlüssel)
sendmessage
ein. Diese benutzerdefinierte Route verarbeitet Nachrichten, die an verbundene Clients gesendet werden. -
Wählen Sie Weiter aus.
-
Wählen Sie in Attach integrations (Integrationen anfügen) für jede Route und jeden Integration type (Integrationstyp) „Lambda“ aus.
Wählen Sie für Lambda die entsprechende Lambda-Funktion aus, mit der Sie AWS CloudFormation in Schritt 1 erstellt haben. Der Name jeder Funktion entspricht einer Route. Für die Route $connect wählen Sie beispielsweise die Funktion mit dem Namen
websocket-chat-app-tutorial-ConnectHandler
aus. -
Überprüfen Sie die Phase, die API Gateway für Sie erstellt. Standardmäßig erstellt API Gateway einen Namen für die Phase
production
und stellt Ihren Schritt automatisch in dieser Phase API bereit. Wählen Sie Weiter aus. -
Wählen Sie Create and deploy (Erstellen und bereitstellen) aus.
Schritt 3: Testen Sie Ihre API
Als Nächstes testen Sie Ihre, API um sicherzustellen, dass sie ordnungsgemäß funktioniert. Verwenden Sie den wscat
Befehl, um eine Verbindung mit dem herzustellenAPI.
Um den Aufruf URL für dein zu bekommen API
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. -
Wählen Sie Ihre API.
-
Wählen Sie Stages (Phasen) und anschließend production (Produktion) aus.
-
Notieren Sie API sich Ihre WebSocket URL. Das URL sollte so aussehen
wss://
.abcdef123
.execute-api.us-east-2
.amazonaws.com/production
Um eine Verbindung zu Ihrem herzustellen API
-
Verwenden Sie den folgenden Befehl, um eine Verbindung zu Ihrem herzustellenAPI. Wenn Sie eine Verbindung zu Ihrem herstellenAPI, ruft API Gateway die
$connect
Route auf. Bei Aufruf dieser Route wird eine Lambda-Funktion aufgerufen, mit der die Verbindungs-ID in DynamoDB gespeichert wird.wscat -c wss://
abcdef123
.execute-api.us-west-2
.amazonaws.com/productionConnected (press CTRL+C to quit)
-
Öffnen Sie ein neues Terminal. Führen Sie den Befehl wscat erneut mit den folgenden Parametern aus.
wscat -c wss://
abcdef123
.execute-api.us-west-2
.amazonaws.com/productionConnected (press CTRL+C to quit)
Anschließend erhalten Sie zwei verbundene Clients, die Nachrichten austauschen können.
So senden Sie eine Nachricht
-
APIGateway bestimmt anhand Ihres API Routenauswahlausdrucks, welche Route aufgerufen werden soll. Ihr API Routenauswahlausdruck lautet
$request.body.action
. Daher ruft API Gateway diesendmessage
Route auf, wenn Sie die folgende Nachricht senden:{"action": "sendmessage", "message": "hello, everyone!"}
Die Lambda-Funktion, die der aufgerufenen Route zugeordnet ist, sammelt den Client IDs von DynamoDB. Anschließend ruft die Funktion das API Gateway Management auf API und sendet die Nachricht an diese Clients. Alle verbundenen Clients erhalten die folgende Nachricht:
< hello, everyone!
Um Ihre API $default Route aufzurufen
-
APIGateway ruft Ihre API Standardroute auf, wenn ein Client eine Nachricht sendet, die nicht Ihren definierten Routen entspricht. Die der
$default
Route zugeordnete Lambda-Funktion verwendet das API Gateway ManagementAPI, um dem Client Informationen über seine Verbindung zu senden.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="}
Um die Verbindung zu Ihrem zu trennen API
-
Drücken Sie
CTRL+C
, um die Verbindung zu Ihrem zu trennenAPI. Wenn ein Client die Verbindung zu Ihrem trenntAPI, ruft API Gateway Ihre Route aufAPI.$disconnect
Die Lambda-Integration für Ihre API$disconnect
Route entfernt die Verbindungs-ID aus DynamoDB.
Schritt 4: Bereinigen
Um unnötige Kosten zu verhindern, löschen Sie die Ressourcen, die Sie im Rahmen dieses Tutorials erstellt haben. Die folgenden Schritte löschen Ihren AWS CloudFormation Stack und. WebSocket API
Um ein zu löschen WebSocket API
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. -
Wählen Sie auf der APIsSeite Ihre aus
websocket-chat-app-tutorial
API. Wählen Sie Actions (Aktionen) und Delete (Löschen) aus. Bestätigen Sie anschließend Ihre Auswahl.
Um einen AWS CloudFormation Stapel zu löschen
Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie Ihren AWS CloudFormation Stack aus.
-
Wählen Sie Löschen und bestätigen Sie dann Ihre Auswahl.
Nächste Schritte: Automatisieren Sie mit AWS CloudFormation
Sie können die Erstellung und Bereinigung aller an diesem Tutorial beteiligten AWS Ressourcen automatisieren. Eine AWS CloudFormation Vorlage, die diese API und alle zugehörigen Ressourcen erstellt, finden Sie unter ws-chat-app.yaml.