Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Tutorial: Erstellen einer WebSocket-API mit einer AWS-Integration

Fokusmodus
Tutorial: Erstellen einer WebSocket-API mit einer AWS-Integration - Amazon API Gateway

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.

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.

In diesem Tutorial erstellen Sie eine Serverless-Broadcast-Anwendung mit einer WebSocket-API. Kunden können Nachrichten erhalten, ohne Updates abfragen zu müssen.

In diesem Tutorial sehen Sie, wie Nachrichten an verbundene Clients übertragen werden. Enthalten sind außerdem ein Beispiel für einen Lambda-Genehmiger, eine Scheinintegration und eine Nicht-Proxy-Integration für Step Functions.

Übersicht über die Architektur der API, die Sie in diesem Tutorial erstellen.

Nachdem Sie Ihre Ressourcen mithilfe einer AWS CloudFormation-Vorlage erstellt haben, verwenden Sie die API-Gateway-Konsole zur Erstellung einer WebSocket-API, die in Ihre AWS-Ressourcen integriert wird. Sie fügen Ihrer API einen Lambda-Genehmiger hinzu und erstellen eine AWS-Serviceintegration mit Step Functions, um die Ausführung eines Zustandsautomaten zu starten. Der Zustandsautomat für die Step Functions ruft eine Lambda-Funktion auf, die eine Nachricht an alle verbundenen Clients sendet.

Nachdem Sie Ihre API erstellt haben, testen Sie die Verbindung zu Ihrer API und prüfen, ob Nachrichten gesendet und empfangen werden. Dieses Tutorial nimmt ungefähr 30 Minuten in Anspruch.

Voraussetzungen

Sie benötigen die folgenden Voraussetzungen:

Wir empfehlen, dass Sie zunächst das WebSocket-Chat-App-Tutorial abschließen, bevor Sie mit diesem Tutorial beginnen. Das WebSocket-Chat-App-Tutorial finden Sie unter Tutorial: Erstellen einer WebSocket-Chat-App mit einer WebSocket-API, Lambda und DynamoDB.

Schritt 1: Erstellen von Ressourcen

Laden Sie die Vorlage für die App-Erstellung für AWS CloudFormation herunter und entzippen Sie diese. Sie verwenden diese Vorlage, um Folgendes zu erstellen:

  • Lambda-Funktionen, die API-Anforderungen bearbeiten und den Zugriff auf Ihre API genehmigen.

  • Eine DynamoDB-Tabelle zum Speichern von Client-IDs und der vom Lambda-Genehmiger zurückgegebenen ID des Prinzipal-Benutzers.

  • Einen Zustandsautomaten für die Step Functions zur Versendung von Nachrichten an verbundene Clients.

So erstellen Sie einen AWS CloudFormation-Stack
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Stack erstellen und dann Mit neuen Ressourcen (Standard) aus.

  3. Wählen Sie unter Vorlage angeben die Option Vorlagendatei hochladen aus.

  4. Wählen Sie die Vorlage aus, die Sie heruntergeladen haben.

  5. Wählen Sie Weiter aus.

  6. Geben Sie für Stack-Name die Zeichenfolge websocket-step-functions-tutorial ein und klicken Sie auf Weiter.

  7. Wählen Sie in Stack-Optionen konfigurieren die Option Weiter aus.

  8. Bestätigen Sie in Funktionen, dass AWS CloudFormation IAM-Ressourcen in Ihrem Konto erstellen darf.

  9. Wählen Sie Absenden aus.

AWS CloudFormation stellt die in der Vorlage angegebenen Ressourcen bereit. Die Bereitstellung der Ressourcen kann einige Minuten dauern. Wählen Sie die Registerkarte Ausgaben aus, um die von Ihnen erstellten Ressourcen und deren ARNs zu sehen. Wenn der Status Ihres AWS CloudFormation-Stacks CREATE_COMPLETE ist, können Sie mit dem nächsten Schritt fortfahren.

Schritt 2: Erstellen einer WebSocket-API

Sie erstellen eine WebSocket-API zur Verarbeitung von Client-Verbindungen und Routenanforderungen an die Ressourcen, die Sie in Schritt 1 erstellt haben.

Erstellen einer WebSocket-API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Create API (API erstellen) aus. Wählen Sie in WebSocket API (WebSocket-API) die Option Build (Entwickeln) aus.

  3. Geben Sie in API name (API-Name) websocket-step-functions-tutorial ein.

  4. Geben Sie in Route selection expression (Ausdruck für die Routenauswahl) request.body.action ein.

    Der Ausdruck für die Routenauswahl legt die Route fest, die von API Gateway aufgerufen wird, wenn ein Client eine Nachricht sendet.

  5. Wählen Sie Weiter.

  6. Wählen Sie unter Vordefinierte Routen die Optionen $connect hinzufügen, $disconnect hinzufügen und $default hinzufügen aus.

    Die Routen $connect und $disconnect sind spezielle Routen, die API Gateway automatisch aufruft, wenn ein Client eine Verbindung zu einer API herstellt oder trennt. API Gateway ruft die $default-Route auf, wenn keine anderen Routen mit einer Anforderung übereinstimmen. Nachdem Sie Ihre API erstellt haben, erstellen Sie eine benutzerdefinierte Route, um eine Verbindung zu den Step Functions herzustellen.

  7. Wählen Sie Weiter.

  8. Gehen Sie für Integration für $connect wie folgt vor:

    1. Wühlen Sie unter Integrationstyp die Option Lambda aus.

    2. Unter Lambda-Funktion wählen Sie dann die entsprechende $connect-Lambda-Funktion aus, die Sie in Schritt 1 mit AWS CloudFormation erstellt haben. Der Lambda-Funktionsname sollte mit websocket-step beginnen.

  9. Gehen Sie für Integration für $disconnect wie folgt vor:

    1. Wählen Sie unter Integrationstyp die Option Lambda aus.

    2. Unter Lambda-Funktion wählen Sie dann die entsprechende $disconnect-Lambda-Funktion aus, die Sie in Schritt 1 mit AWS CloudFormation erstellt haben. Der Lambda-Funktionsname sollte mit websocket-step beginnen.

  10. Wählen Sie für Integration für $default die Option Mock aus.

    Bei einer Mock-Integration verwaltet API Gateway die Routenantwort ohne ein Integrations-Backend.

  11. Wählen Sie Weiter.

  12. Überprüfen Sie die Phase, die API Gateway für Sie erstellt. Standardmäßig erstellt API Gateway eine Stufe namens Produktion und stellt Ihre API automatisch für diese Stufe bereit. Wählen Sie Weiter.

  13. Wählen Sie Create and deploy (Erstellen und bereitstellen) aus.

Schritt 3: Erstellen eines Lambda-Genehmigers

Sie erstellen einen Lambda-Genehmiger, um den Zugriff auf Ihre WebSocket-API zu kontrollieren. Die AWS CloudFormation-Vorlage hat die Lambda-Genehmigerfunktion für Sie erstellt. Sie können die Lambda-Funktion auch in der Lambda-Konsole sehen. Der Name muss mit websocket-step-functions-tutorial-AuthorizerHandler beginnen. Diese Lambda-Funktion weist alle Aufrufe der WebSocket-API zurück, es sei denn, der Authorization-Header lautet Allow. Außerdem übergibt die Lambda-Funktion die $context.authorizer.principalId-Variable auch an Ihre API, die später in der DynamoDB-Tabelle zur Identifizierung der API-Aufrufer verwendet wird.

In diesem Schritt konfigurieren Sie die $connect-Route zur Verwendung des Lambda-Genehmigers.

Erstellen eines Lambda-Genehmigers
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie im Hauptnavigationsbereich Genehmiger.

  3. Klicken Sie auf Genehmiger erstellen.

  4. Geben Sie unter Genehmigername LambdaAuthorizer ein.

  5. Geben Sie unter Genehmiger-ARN den Namen des mit der AWS CloudFormation-Vorlage erstellten Genehmigers ein. Der Name muss mit websocket-step-functions-tutorial-AuthorizerHandler beginnen.

    Anmerkung

    Wir empfehlen, diesen Beispielgenehmiger nicht für Ihre Produktions-APIs zu verwenden.

  6. Wählen Sie unter Identitätsquellentyp die Option Header aus. Geben Sie für Key (Schlüssel) Authorization ein.

  7. Wählen Sie Autorisierer erstellen.

Nachdem Sie Ihren Genehmiger erstellt haben, hängen Sie ihn an die $connect-Route Ihrer API an.

So fügen Sie einen Genehmiger zu der $connect-Route hinzu
  1. Klicken Sie im Hauptnavigationsbereich auf Routen.

  2. Wählen Sie die $connect-Route aus.

  3. Wählen Sie im Abschnitt Route request settings (Einstellungen der Routenanforderung) die Option Edit (Bearbeiten) aus.

  4. Öffnen Sie das Dropdown-Menü Genehmigung und wählen Sie Ihren Anforderungsgenehmiger aus.

  5. Wählen Sie Änderungen speichern.

Schritt 4: Erstellen einer bidirektionalen Scheinintegration

Als Nächstes erstellen Sie die bidirektionale Scheinintegration für die $default-Route. Mit einer Scheinintegration können Sie eine Antwort an den Client senden, ohne ein Backend zu verwenden. Wenn Sie eine Integration für die $default-Route erstellen, können Sie damit Ihren Kunden zeigen, wie sie mit Ihrer API interagieren können.

Sie konfigurieren die $default-Route, um Clients darüber zu informieren, dass sie die SendMessage-Route verwenden sollen.

So erstellen Sie eine Scheinintegration
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie die $default-Route und dann die Registerkarte Integrationsanforderung aus.

  3. Klicken Sie unter Anforderungsvorlagen auf Bearbeiten.

  4. Geben Sie unter Ausdruck für die Vorlagenauswahl 200 ein und klicken Sie dann auf Bearbeiten.

  5. Wählen Sie auf der Registerkarte Integrationsanforderung unter Anforderungsvorlagen die Option Vorlage erstellen aus.

  6. Geben Sie unter Vorlagenschlüssel 200 ein.

  7. Geben Sie für Vorlagentext die folgende Zuweisungsvorlage ein:

    {"statusCode": 200}

    Wählen Sie Create template (Vorlage erstellen) aus.

    Das Ergebnis sollte wie folgt aussehen:

    Konfigurieren der Integrationsanfrage für die Scheinintegration der $default-Route
  8. Wählen Sie im Bereich $default-Route die Option Bidirektionale Kommunikation aktivieren aus.

  9. Wählen Sie die Registerkarte Integrationsantwort und dann Integrationsantwort erstellen aus.

  10. Geben Sie unter Antwortschlüssel $default ein.

  11. Geben Sie unter Vorlagen-Auswahlausdruck 200 ein.

  12. Wählen Sie Create response (Antwort erstellen) aus.

  13. Klicken Sie unter Zuweisungsvorlagen auf Vorlage erstellen.

  14. Geben Sie unter Vorlagenschlüssel 200 ein.

  15. Geben Sie für Antwortvorlage die folgende Zuweisungsvorlage ein:

    {"Use the sendmessage route to send a message. Connection ID: $context.connectionId"}
  16. Wählen Sie Create template (Vorlage erstellen) aus.

    Das Ergebnis sollte wie folgt aussehen:

    Konfigurieren der Integrationsantwort für die Scheinintegration der $default-Route

Schritt 5: Erstellen einer Nicht-Proxy-Integration mit Step Functions

Als Nächstes erstellen Sie eine sendmessage-Route. Kunden können die sendmessage-Route zur Versendung einer Nachricht an alle verbundenen Clients aufrufen. Die sendmessage-Route verfügt über eine Nicht-Proxy-AWS-Serviceintegration mit AWS Step Functions. Die Integration ruft den Befehl StartExecution für die Zustandsmaschine für Step Functions auf, die die AWS CloudFormation-Vorlage für Sie erstellt hat.

So erstellen Sie eine Nicht-Proxy-Integration
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Create route (Route erstellen) aus.

  3. Geben Sie in Route key (Routenschlüssel) sendmessage ein.

  4. Wählen Sie unter Integrationstyp die Option AWS-Service aus.

  5. Geben Sie unter AWS-Region die Region ein, in der Sie Ihre AWS CloudFormation-Vorlage bereitgestellt haben.

  6. Wählen Sie unter AWS-Service die Option Step Functions aus.

  7. Wählen Sie in HTTP method POST.

  8. Für Aktionsname geben Sie StartExecution ein.

  9. Geben Sie für Ausführungsrolle die Ausführungsrolle ein, die von der AWS CloudFormation-Vorlage erstellt wurde. Der Name sollte WebSocketTutorialApiRole lauten.

  10. Wählen Sie Create route (Route erstellen) aus.

Als Nächstes erstellen Sie eine Zuweisungsvorlage, um Anforderungsparameter an die Zustandsmaschine für Step Functions zu senden.

Erstellen einer Zuweisungsvorlage
  1. Wählen Sie die sendmessage-Route und dann die Registerkarte Integrationsanforderung aus.

  2. Klicken Sie im Abschnitt Vorlagenanforderung auf Bearbeiten.

  3. Geben Sie unter Vorlagen-Auswahlausdruck \$default ein.

  4. Wählen Sie Edit (Bearbeiten) aus.

  5. Klicken Sie im Abschnitt Vorlagenanforderung auf Vorlage erstellen.

  6. Geben Sie unter Vorlagenschlüssel \$default ein.

  7. Geben Sie für Vorlagentext die folgende Zuweisungsvorlage ein:

    #set($domain = "$context.domainName") #set($stage = "$context.stage") #set($body = $input.json('$')) #set($getMessage = $util.parseJson($body)) #set($mymessage = $getMessage.message) { "input": "{\"domain\": \"$domain\", \"stage\": \"$stage\", \"message\": \"$mymessage\"}", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:WebSocket-Tutorial-StateMachine" }

    Ersetzen Sie StateMachinEarn mit dem ARN der von AWS CloudFormation erstellten Zustandsmaschine.

    Die Zuweisungsvorlage führt Folgendes aus:

    • Erzeugt die Variable $domain mithilfe der Kontextvariable domainName.

    • Erzeugt die Variable $stage mithilfe der Kontextvariable stage.

      Die Variablen $domain und $stage sind für die Erzeugung einer Callback-URL erforderlich.

    • Extrahiert die message-Eigenschaft aus der eingehenden sendmessage-JSON-Nachricht.

    • Erzeugt die Eingabe für den Zustandsautomaten. Die Eingabe ist die Domain und die Stufe der WebSocket-API sowie die Nachricht von der sendmessage-Route.

  8. Wählen Sie Create template (Vorlage erstellen) aus.

    Konfigurieren der sendmessage-Route

Sie können eine Nicht-Proxy-Integration auf den Routen $connect oder $disconnect erstellen, um direkt eine Verbindungs-ID aus der DynamoDB-Tabelle hinzuzufügen oder zu entfernen, ohne eine Lambda-Funktion aufzurufen.

Schritt 6: Ihre API testen

Als Nächstes veröffentlichen und testen Sie Ihre API, um sicherzustellen, dass sie korrekt funktioniert. Sie verwenden den wscat-Befehl, um eine Verbindung zur API aufzubauen, und dann einen Slash-Befehl, um einen Ping-Frame zu senden, der die Verbindung zur WebSocket-API überprüft.

Stellen Sie Ihre API bereit
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Klicken Sie im Hauptnavigationsbereich auf Routen.

  3. Klicken Sie auf Deploy API.

  4. Wählen Sie unter Stufe Produktion aus.

  5. (Optional) Geben Sie unter Bereitstellungsbeschreibung eine Beschreibung ein.

  6. Wählen Sie Bereitstellen.

Nachdem Sie Ihre API bereitgestellt haben, können Sie sie aufrufen. Verwenden Sie die Aufruf-URL, um Ihre API aufzurufen.

So rufen Sie die URL für den Aufruf Ihrer API auf
  1. Wählen Sie Ihre API aus.

  2. Wählen Sie Stages (Phasen) und anschließend production (Produktion) aus.

  3. Notieren Sie sich die WebSocket-URL Ihrer API. Die URL sollte wie wss://abcdef123.execute-api.us-east-2.amazonaws.com/production aussehen.

Jetzt, da Sie Ihre Aufruf-URL haben, können Sie die Verbindung mit Ihrer WebSocket-API testen.

So testen Sie die Verbindung zu Ihrer API
  1. Stellen Sie mit dem folgenden Befehl eine Verbindung zu Ihrer API her. Zuerst testen Sie die Verbindung, indem Sie den /ping-Pfad aufrufen.

    wscat -c wss://abcdef123.execute-api.us-east-2.amazonaws.com/production -H "Authorization: Allow" --slash -P
    Connected (press CTRL+C to quit)
  2. Geben Sie den folgenden Befehl ein, um den Kontrollrahmen anzupingen. Sie können einen Kontrollrahmen für Keepalive-Zwecke von der Client-Seite aus verwenden.

    /ping

    Das Ergebnis sollte wie folgt aussehen:

    < Received pong (data: "")

Jetzt, da Sie die Verbindung getestet haben, können Sie Ihre API auf ordnungsgemäße Funktion prüfen. In diesem Schritt öffnen Sie ein neues Terminalfenster, damit die WebSocket-API eine Nachricht an alle verbundenen Clients senden kann.

So testen Sie Ihre API
  1. Öffnen Sie ein neues Terminal. Führen Sie den Befehl wscat erneut mit den folgenden Parametern aus.

    wscat -c wss://abcdef123.execute-api.us-east-2.amazonaws.com/production -H "Authorization: Allow"
    Connected (press CTRL+C to quit)
  2. API Gateway legt basierend auf dem Ausdruck für die Routenanforderungsauswahl Ihrer API fest, welche Route aufgerufen wird. Der Ausdruck für die Routenauswahl Ihrer API lautet $request.body.action. Daher ruft API Gateway die Route sendmessage auf, wenn Sie die folgende Nachricht senden:

    {"action": "sendmessage", "message": "hello, from Step Functions!"}

    Die der Route zugeordnete Zustandsmaschine für Step Functions ruft eine Lambda-Funktion mit der Nachricht und der Callback-URL auf. Die Lambda-Funktion ruft die API-Gateway-Management-API auf und sendet die Nachricht an alle verbundenen Clients. Alle Clients erhalten die folgende Nachricht:

    < hello, from Step Functions!

Nachdem Sie Ihre WebSocket-API getestet haben, können Sie die Verbindung zu Ihrer API trennen.

So trennen Sie die Verbindung zu Ihrer API
  • Zur Trennung der Verbindung zu Ihrer API drücken Sie CTRL+C.

    Wenn ein Client die Verbindung zu Ihrer API trennt, ruft API Gateway die Route $disconnect Ihrer API auf. Die Lambda-Integration der $disconnect-Route Ihrer API entfernt die Verbindungs-ID aus DynamoDB.

Schritt 7: Bereinigen

Um unnötige Kosten zu verhindern, löschen Sie die Ressourcen, die Sie im Rahmen dieses Tutorials erstellt haben. Mit den folgenden Schritten werden Ihr AWS CloudFormation-Stack und Ihre WebSocket-API gelöscht.

So erstellen Sie eine WebSocket-API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie auf der Seite APIs Ihre websocket-api aus.

  3. Wählen Sie Actions (Aktionen) und Delete (Löschen) aus. Bestätigen Sie anschließend Ihre Auswahl.

So löschen Sie einen AWS CloudFormation-Stack
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Ihren AWS CloudFormation-Stack aus.

  3. Wählen Sie Löschen und bestätigen Sie dann Ihre Auswahl.

Nächste Schritte

Sie können die Erstellung und Bereinigung aller AWS-Ressourcen in diesem Tutorial automatisieren. Ein Beispiel für eine AWS CloudFormation-Vorlage, die diese Aktionen für dieses Tutorial automatisiert, finden Sie unter ws-sfn.zip.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.