WebSocket-Auswahlausdrücke
API Gateway verwendet Auswahlausdrücke als Möglichkeit, den Anfrage- und Antwortkontext auszuwerten und einen Schlüssel zu erzeugen. Anhand des Schlüssels wird dann aus einem Satz möglicher Werte ausgewählt, die gewöhnlich von Ihnen, dem API-Entwickler, bereitgestellt werden. Der genaue Satz der unterstützten Variablen ist vom jeweiligen Ausdruck abhängig. Jeder Ausdruck wird nachstehend weiter erörtert.
Für alle Ausdrücke folgt die Sprache dem gleichen Satz von Regeln:
-
Einer Variable wird vorangestell
"$"
. -
Variablen können explizit durch geschweifte Klammern abgegrenzt werden, z. .,
"${request.body.version}-beta"
. -
Mehrere Variablen werden unterstützt, aber die Auswertung findet nur einmal statt (keine rekursive Auswertung).
-
Ein Dollarzeichen (
$
) kann durch die Escape-Zeichen"\"
geschützt werden. Dies ist besonders nützlich, wenn ein Ausdruck definiert wird, der dem reservierten$default
-Schlüssel zugeordnet wird, z. B."\$default"
. -
In einigen Fällen ist ein Musterformat erforderlich. In diesem Fall sollte der Ausdruck entsprechend
"/"
-Statuscodes mit Schrägstrichen ("/2\d\d/"
) verpackt werden, z. B.2
.XX
Themen
Routenantwort-Auswahlausdrücke
Eine Routenantwort wird für die Modellierung einer Antwort vom Backend zum Client verwendet. Für WebSocket-APIs ist eine Routenantwort optional. Wenn definiert, zeigt das API Gateway, dass es bei Empfang einer WebSocket-Nachricht eine Antwort an einen Client zurücksenden soll.
Die Auswertung des Routenantwort-Auswahlausdrucks ergibt einen Routenantwort-Schlüssel. Zukünftig wird dieser Schlüssel zur Auswahl unter einer der mit der API verknüpften RouteResponses
dienen. Zurzeit wird jedoch nur der Schlüssel $default
unterstützt.
API-Schlüssel-Auswahlausdrücke
Dieser Ausdruck wird ausgewertet, wenn der Service bestimmt, dass mit der vorliegenden Anforderung nur fortgefahren werden soll, wenn der Client einen gültigen API-Schlüssel bereitstellt.
Zurzeit werden als einzigen Werte $request.header.x-api-key
und $context.authorizer.usageIdentifierKey
unterstützt.
API-Zuordnungs-Auswahlausdrücke
Dieser Ausdruck wird ausgewertet, um zu bestimmen, welche API-Stufe bei einer über eine benutzerdefinierte Domäne gestellten Anforderung auszuwählen ist.
Derzeit wird als einziger Wert unterstütz $request.basepath
.
Zusammenfassung der WebSocket-Auswahlausdrücke
In der folgenden Tabelle finden Sie eine Zusammenfassung der Anwendungsfälle für Auswahlausdrücke in WebSocket-APIs:
Auswahlausdrücke | Ausgewertet auf Schlüssel für | Hinweise | Beispielanwendungsfall |
---|---|---|---|
Api.RouteSelectionExpression |
Route.RouteKey |
$default wird als Catch-all-Route unterstützt. |
Leitet WebSocket-Nachrichten je nach Kontext einer Client-Anforderung weiter. |
Route.ModelSelectionExpression |
Schlüssel für Route.RequestModels |
Optional. Bei Angabe für Nicht-Proxy-Integrationen findet eine Modellvalidierung statt.
|
Führt die Anforderungsvalidierung dynamisch innerhalb derselben Route aus. |
Integration.TemplateSelectionExpression |
Schlüssel für Integration.RequestTemplates |
Optional. Kann für Nicht-Proxy-Integrationen zum Bearbeiten von eingehenden Nutzlasten bereitgestellt werden.
|
Dient zur Bearbeitung der Anforderung der aufrufenden Methode je nach den dynamischen Eigenschaften der Anforderung. |
Integration.IntegrationResponseSelectionExpression |
IntegrationResponse.IntegrationResponseKey |
Optional. Kann für Nicht-Proxy-Integrationen bereitgestellt werden. Dient als Mustervergleich für Fehlermeldungen (von Lambda) oder Statuscodes (von HTTP-Integrationen).
|
Dient zum Bearbeiten der Antwort vom Backend. Wählen Sie, welche Aktion basierend auf der dynamischen Antwort des Backends ausgeführt werden soll (z. B. unterschiedliche Behandlung bestimmter Fehler). |
IntegrationResponse.TemplateSelectionExpression |
Schlüssel für IntegrationResponse.ResponseTemplates |
Optional. Kann für Nicht-Proxy-Integrationen bereitgestellt werden. $default wird unterstützt. |
In einigen Fällen kann eine dynamische Eigenschaft der Antwort verschiedene Transformationen innerhalb derselben Route und zugehörigen Integration vorgeben.
|
Route.RouteResponseSelectionExpression |
RouteResponse.RouteResponseKey |
Sollte angegeben werden, um für eine WebSocket-Route die bidirektionale Kommunikation einzuleiten. Zurzeit ist dieser Wert ausschließlich auf |
|
RouteResponse.ModelSelectionExpression |
Schlüssel für RouteResponse.RequestModels |
Wird derzeit nicht unterstützt. |