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 Ihrer WebSocket API werden eingehende JSON-Nachrichten auf der Grundlage von Routen, die Sie konfigurieren, an Backend-Integrationen weitergeleitet. (Nicht-JSON-Nachrichten werden an eine von Ihnen konfigurierte $default
-Route weitergeleitet.)
Eine Route umfasst einen Routenschlüssel. Dabei handelt es sich um den Wert, der bei der Auswertung eines Routen-Auswahlausdrucks erwartet wird. Das routeSelectionExpression
ist ein auf API-Ebene definiertes Attribut. Es gibt eine JSON-Eigenschaft an, von der erwartet wird, dass sie in der Nachricht-Nutzlast vorhanden ist. Weitere Informationen zu Routen-Auswahlausdrücken finden Sie unter Routen-Auswahlausdrücke.
Beispiel: Wenn Ihre JSON-Nachrichten eine action
-Eigenschaft enthalten und Sie basierend auf dieser Eigenschaft verschiedene Aktionen durchführen möchten, könnte Ihr Routen-Auswahlausdruck ${request.body.action}
lauten. Ihre Routing-Tabelle würde in diesem Fall angeben, welche Aktion ausgeführt werden soll, indem der Wert der action
-Eigenschaft gegen die benutzerdefinierten Routenschlüssel-Werte abgeglichen wird, die Sie in der Tabelle definiert haben.
Es gibt drei vordefinierte Routen, die verwendet werden können: $connect
, $disconnect
und $default
. Darüber hinaus können Sie benutzerdefinierte Routen erstellen.
-
API Gateway ruft die
$connect
Route auf, wenn eine persistente Verbindung zwischen dem Client und einer WebSocket API initiiert wird. -
API Gateway ruft die
$disconnect
-Route auf, wenn der Client oder der Server die Verbindung mit der API unterbricht. -
API Gateway ruft eine benutzerdefinierte Route auf, wenn nach der Auswertung des Routen-Auswahlausdrucks im Hinblick auf die Nachricht eine übereinstimmende Route gefunden wird. Die Übereinstimmung bestimmt, welche Integration aufgerufen wird.
-
API Gateway ruft die Route
$default
auf, wenn der Routen-Auswahlausdruck nicht im Hinblick auf die Nachricht ausgewertet werden kann oder wenn keine übereinstimmende Route gefunden wird.
Routen-Auswahlausdrücke
Ein Routen-Auswahlausdruck wird ausgewertet, wenn der Service die Route auswählt, der eine eingehende Nachricht folgen soll. Der Service verwendet die Route, deren routeKey
genau dem ausgewerteten Wert entspricht. Wenn bei fehlender Übereinstimmung eine Route mit dem Routenschlüssel $default
vorhanden ist, wird diese Route ausgewählt. Wenn keine Routen dem ausgewählten Wert entsprechen und keine $default
-Route vorhanden ist, gibt der Service einen Fehler zurück. Für WebSocket -based APIs sollte der Ausdruck die folgende Form haben$request.body.
.{path_to_body_element}
Angenommen, Sie senden die folgende JSON-Nachricht:
{ "service" : "chat", "action" : "join", "data" : { "room" : "room1234" } }
Möglicherweise möchten Sie das Verhalten Ihrer API basierend auf der Eigenschaft action
auswählen. In diesem Fall könnten Sie den folgenden Routen-Auswahlausdruck definieren:
$request.body.action
request.body
Bezieht sich in diesem Beispiel auf die JSON-Nutzlast Ihrer Nachricht und .action
ist ein JSONPathrequest.body
einen beliebigen JSON-Pfad-Ausdruck verwenden. Denken Sie aber daran, dass das Ergebnis in Text umgewandelt wird. Wenn Ihr JSONPath Ausdruck beispielsweise ein Array mit zwei Elementen zurückgibt, wird dieses als Zeichenfolge "[item1, item2]"
dargestellt. Aus diesem Grund ist es sinnvoll, dass Ihr Ausdruck auf einen Wert und nicht auf ein Array oder Objekt ausgewertet wird.
Sie können einfach einen statischen Wert oder auch mehrere Variablen verwenden. In der folgenden Tabelle werden Beispiele und deren im Hinblick auf die vorhergehende Nutzlast ausgewerteten Ergebnisse gezeigt.
Ausdruck | Ausgewertetes Ergebnis | Beschreibung |
---|---|---|
$request.body.action |
join |
Eine entpackte Variable |
${request.body.action} |
join |
Eine verpackte Variable |
${request.body.service}/${request.body.action} |
chat /join |
Mehrere Variablen mit statischen Werten |
${request.body.action}-${request.body.invalidPath}
|
join- |
Wenn der nicht gefunden JSONPath wird, wird die Variable als „“ aufgelöst. |
action |
action |
Statischer Wert |
\$default |
$default |
Statischer Wert |
Das ausgewertete Ergebnis wird zum Auffinden der Route verwendet. Wenn eine Route mit einem übereinstimmenden Routenschlüssel vorhanden ist, wird die Route zur Verarbeitung der Nachricht ausgewählt. Wenn keine passende Route gefunden wird, versucht API Gateway, die $default
-Route zu finden, falls verfügbar. Wenn die $default
-Route nicht definiert ist, gibt API Gateway einen Fehler zurück.
Routen für eine WebSocket API in API Gateway einrichten
Wenn Sie zum ersten Mal eine neue WebSocket API erstellen, gibt es drei vordefinierte Routen: $connect
$disconnect
, und$default
. Sie können sie mithilfe der Konsole, der API oder erstellen AWS CLI. Auf Wunsch können Sie benutzerdefinierte Routen erstellen. Weitere Informationen finden Sie unter WebSocket-APIs in API Gateway im Überblick.
Anmerkung
In der CLI ist es möglich, Routen vor oder nach dem Erstellen von Integrationen zu erstellen. Auch können Sie dieselbe Integration für mehrere Routen wiederverwenden.
Route mit der API Gateway-Konsole erstellen
So erstellen Sie eine Route über die API Gateway-Konsole:
-
Melden Sie sich bei der API Gateway-Konsole an, wählen Sie die API und wählen Sie Routes (Routen).
Wählen Sie Create route (Route erstellen) aus.
Geben Sie bei Route key (Routenschlüssel) den Schlüsselnamen ein. Sie können die vordefinierten Routen (
$connect
,$disconnect
und$default
) oder eine benutzerdefinierte Route erstellen.Anmerkung
Wenn Sie eine benutzerdefinierte Route erstellen, verwenden Sie nicht das
$
-Präfix im Routenschlüsselnamen. Dieses Präfix ist für vordefinierte Routen reserviert.-
Wählen und konfigurieren Sie den Integrationstyp für die Route. Weitere Informationen finden Sie unter Richten Sie mit der WebSocket API Gateway-Konsole eine API-Integrationsanfrage ein.
Erstellen Sie eine Route mit dem AWS CLI
Der folgende Befehl create-route erstellt eine Route:
aws apigatewayv2 --region us-east-1 create-route --api-id aabbccddee --route-key $default
Die Ausgabe wird wie folgt aussehen:
{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "$default", "RouteId": "1122334" }
Angeben der Routenanforderungs-Einstellungen für $connect
Wenn Sie die $connect
-Route für Ihre API einrichten, sind die folgenden optionalen Einstellungen verfügbar, um die Autorisierung für Ihre API zu ermöglichen. Weitere Informationen finden Sie unter Die Route $connect.
-
Authorization (Autorisierung): Wenn keine Autorisierung erforderlich ist, können Sie
NONE
angeben. Geben Sie andernfalls Folgendes ein:-
AWS_IAM
um den Zugriff auf Ihre API mithilfe von AWS Standard-IAM-Richtlinien zu kontrollieren. -
CUSTOM
, um die Autorisierung für eine API durch Angabe einer zuvor von Ihnen erstellten Lambda-Genehmigerfunktion zu implementieren. Der Autorisierer kann sich in Ihrem eigenen AWS Konto oder einem anderen Konto befinden. AWS Weitere Informationen über Lambda-Genehmiger finden Sie unter API Gateway-Lambda-Genehmiger verwenden.Anmerkung
In der API Gateway-Konsole ist die Einstellung
CUSTOM
erst sichtbar, nachdem Sie eine Genehmigerfunktion wie unter Lambda-Genehmiger konfigurieren (Konsole) beschrieben eingerichtet haben.
Wichtig
Die Einstellung von Authorization (Autorisierung) wird auf die gesamte API angewendet, nicht nur auf die
$connect
-Route. Die$connect
-Route schützt die übrigen Routen, da sie für jede Verbindung aufgerufen wird. -
-
API-Schlüssel erforderlich: Sie können für die
$connect
-Route einer API optional einen API-Schlüssel verlangen. Sie können API-Schlüssel zusammen mit Nutzungsplänen verwenden, um den Zugriff auf Ihre zu kontrollieren und zu verfolgen. APIs Weitere Informationen finden Sie unter Nutzungspläne und API-Schlüssel für REST APIs in API Gateway.
$connect
-Routenanforderung über die API Gateway-Konsole einrichten
So richten Sie die $connect
Routenanforderung für eine WebSocket API mithilfe der API Gateway Gateway-Konsole ein:
-
Melden Sie sich bei der API Gateway-Konsole an, wählen Sie die API und wählen Sie Routes (Routen).
-
Wählen Sie unter Routes (Routen)
$connect
aus oder erstellen Sie eine$connect
-Route, indem Sie wie folgt vorgehen Route mit der API Gateway-Konsole erstellen. Wählen Sie im Abschnitt Route request settings (Einstellungen der Routenanforderung) die Option Edit (Bearbeiten) aus.
Wählen Sie für Authorization (Autorisierung) einen Autorisierungstyp aus.
Um eine API für die
$connect
-Route anzufordern, wählen Sie Require API key (API-Schlüssel erforderlich) aus.Wählen Sie Änderungen speichern.