Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Dans votre WebSocket API, les messages JSON entrants sont dirigés vers les intégrations du backend en fonction des routes que vous configurez. (Les messages non JSON sont dirigés vers une route $default
que vous configurez.)
Une route comprend une clé de routage, qui correspond à la valeur attendue une fois qu’une expression de sélection de la route est évaluée. L’attribut routeSelectionExpression
est défini au niveau de l’API. Il spécifie une propriété JSON attendue dans la charge utile du message. Pour plus d’informations sur les expressions de sélection de la route, consultez la section Expressions de sélection de la route.
Par exemple, si vos messages JSON contiennent une propriété action
et que vous souhaitez effectuer différentes actions en fonction de cette propriété, votre expression de sélection de la route peut être ${request.body.action}
. Votre table de routage spécifie l'action à exécuter en mettant en correspondance la valeur de la propriété action
avec les valeurs des clés de routage personnalisées que vous avez définies dans la table.
Trois routes prédéfinies peuvent être utilisées : $connect
, $disconnect
et $default
. De plus, vous pouvez créer des routes personnalisées.
-
API Gateway appelle la
$connect
route lorsqu'une connexion persistante entre le client et une WebSocket API est initiée. -
API Gateway appelle la route
$disconnect
lorsque le client ou le serveur se déconnecte de l’API. -
API Gateway appelle une route personnalisée après évaluation de l’expression de sélection de la route par rapport au message si une route correspondante est trouvée ; la correspondance détermine l’intégration appelée.
-
API Gateway appelle la route
$default
si l’expression de sélection de la route ne peut pas être évaluée par rapport au message ou si aucune route correspondante n’est trouvée.
Expressions de sélection de la route
Une expression de sélection de la route est évaluée lorsque le service sélectionne la route que doit suivre un message entrant. Le service utilise la route dont la clé routeKey
correspond exactement à la valeur évaluée. Si aucune clé ne correspond et qu’une route avec la clé $default
existe, celle-ci est sélectionnée. Si aucune route ne correspond à la valeur évaluée et qu’il n’y a pas de route $default
, le service renvoie une erreur. Pour WebSocket based APIs, l'expression doit être de la forme$request.body.
.{path_to_body_element}
Par exemple, supposons que vous envoyiez le message JSON suivant :
{ "service" : "chat", "action" : "join", "data" : { "room" : "room1234" } }
Vous pouvez sélectionner le comportement de votre API en fonction de la propriété action
. Dans ce cas, vous pouvez définir l’expression de sélection de la route suivante :
$request.body.action
Dans cet exemple, il request.body
fait référence à la charge utile JSON de votre message et .action
est une JSONPathrequest.body
, mais n’oubliez pas que le résultat sera obtenu à l’aide de stringify. Par exemple, si votre JSONPath expression renvoie un tableau de deux éléments, celui-ci sera présenté sous forme de chaîne"[item1, item2]"
. C’est la raison pour laquelle il est recommandé d’utiliser une expression qui correspond à une valeur plutôt qu’à un tableau ou un objet.
Vous pouvez utiliser simplement une valeur statique ou plusieurs variables. Le tableau suivant montre des exemples et leurs résultats évalués par rapport à la charge utile précédente.
Expression | Résultat évalué | Description |
---|---|---|
$request.body.action |
join |
Variable désencapsulée |
${request.body.action} |
join |
Variable encapsulée |
${request.body.service}/${request.body.action} |
chat /join |
Plusieurs variables avec des valeurs statiques |
${request.body.action}-${request.body.invalidPath}
|
join- |
Si le n' JSONPath est pas trouvé, la variable est résolue sous la forme « ». |
action |
action |
Valeur statique |
\$default |
$default |
Valeur statique |
Le résultat évalué est utilisé pour trouver une route. S’il existe une route avec une clé de routage correspondante, elle est sélectionnée pour traiter le message. Si aucune route correspondante n’existe, API Gateway tente de trouver la route $default
, si elle est disponible. Si la route $default
n’est pas définie, API Gateway renvoie une erreur.
Configuration de routes pour une WebSocket API dans API Gateway
Lorsque vous créez une nouvelle WebSocket API pour la première fois, il existe trois itinéraires prédéfinis : $connect
$disconnect
, et$default
. Vous pouvez les créer à l'aide de la console, de l'API ou AWS CLI. Si vous le souhaitez, vous pouvez créer des routes personnalisées. Pour plus d’informations, consultez Présentation des API WebSocket dans API Gateway.
Note
Dans l’interface de ligne de commande, vous pouvez créer des routes avant ou après avoir créé des intégrations, et réutiliser la même intégration pour plusieurs routes.
Création d’une route à l’aide de la console API Gateway
Pour créer une route à l’aide de la console API Gateway
-
Connectez-vous à la console API Gateway et choisissez l’API, puis choisissez Routes.
Choisissez Créer une route.
Pour Clé de route, entrez le nom de la clé de route. Vous pouvez créer les routes prédéfinies (
$connect
,$disconnect
et$default
) ou une route personnalisée.Note
Lorsque vous créez une route personnalisée, n’utilisez pas le préfixe
$
dans le nom de la clé de routage. Ce préfixe est réservé aux routes prédéfinies.-
Sélectionnez et configurez le type d’intégration pour la route. Pour de plus amples informations, veuillez consulter Configuration d'une demande d'intégration d' WebSocket API à l'aide de la console API Gateway.
Créez un itinéraire à l'aide du AWS CLI
La commande create-route suivante crée un itinéraire :
aws apigatewayv2 --region us-east-1 create-route --api-id aabbccddee --route-key $default
Le résultat ressemblera à ce qui suit :
{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "$default", "RouteId": "1122334" }
Spécification des paramètres de requête de routage pour $connect
Lorsque vous configurez la route $connect
pour votre API, les paramètres facultatifs suivants sont disponibles pour activer les autorisations pour votre API. Pour plus d’informations, consultez Route $connect.
-
Authorization (Autorisation) : Si aucune autorisation n’est nécessaire, vous pouvez spécifier
NONE
. Sinon, vous pouvez spécifier :-
AWS_IAM
pour utiliser des politiques AWS IAM standard afin de contrôler l'accès à votre API. -
CUSTOM
pour implémenter l’autorisation pour une API en spécifiant une fonction de mécanisme d’autorisation Lambda que vous avez créée précédemment. L'autorisateur peut résider dans votre propre AWS compte ou sur un autre AWS compte. Pour plus d’informations sur les mécanismes d’autorisation Lambda, consultez Utilisation des mécanismes d’autorisation Lambda API Gateway.Note
Dans la console API Gateway, le paramètre
CUSTOM
est visible uniquement une fois que vous avez configuré une fonction de mécanisme d’autorisation, comme décrit dans Configuration d’un mécanisme d’autorisation Lambda (console).
Important
Le paramètre Authorization (Autorisation) est appliqué à l’ensemble de l’API, et pas uniquement à la route
$connect
. La route$connect
protège les autres routes, car elle est appelée sur chaque connexion. -
-
Clé d’API obligatoire : si vous le souhaitez, vous pouvez exiger une clé d’API pour une route
$connect
de l’API. Vous pouvez utiliser des clés d'API ainsi que des plans d'utilisation pour contrôler et suivre l'accès à votre APIs. Pour de plus amples informations, veuillez consulter Plans d'utilisation et clés d'API pour REST APIs dans API Gateway.
Configuration de la demande de route $connect
à l’aide de la console API Gateway
Pour configurer la demande de $connect
route pour une WebSocket API à l'aide de la console API Gateway :
-
Connectez-vous à la console API Gateway et choisissez l’API, puis choisissez Routes.
-
Sous Routes, choisissez
$connect
ou créez une route$connect
en suivant Création d’une route à l’aide de la console API Gateway. Dans la section Paramètres de requête de routage, choisissez Modifier.
Pour Autorisation, sélectionnez un type d’autorisation.
Pour demander une API pour la route
$connect
, sélectionnez Exiger une clé d’API.Sélectionnez Enregistrer les modifications.