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.
Règles de routage pour connecter les étapes de l'API à un nom de domaine personnalisé pour REST APIs
Une règle de routage est un ensemble de conditions qui, lorsqu'elles sont réunies, appellent une action. Par exemple, une règle peut acheminer toute demande entrante vers un nom de domaine personnalisé qui contient l'en-tête Hello:World
et le chemin de base users
vers l'production
étape d'une API REST.
Les règles sont évaluées par ordre de priorité, et si vous définissez le mode de routage surROUTING_RULE_THEN_API_MAPPING
, API Gateway évalue toujours toutes les règles de routage avant d'évaluer les mappages d'API. La liste suivante décrit comment une règle de routage utilise les conditions, les actions et les priorités.
- Conditions
-
Lorsque les conditions d'une règle sont satisfaites, ses actions sont effectuées. API Gateway prend en charge jusqu'à deux conditions d'en-tête et une condition de chemin. API Gateway évalue conjointement les conditions d'en-tête et les conditions du chemin de base.
Vous pouvez créer une règle sans aucune condition. Lorsque API Gateway évalue cette règle, l'action est toujours exécutée. Vous pouvez créer une règle sans aucune condition en tant que règle fourre-tout.
Pour plus d'informations sur les conditions d'en-tête, consultezFaire correspondre les conditions des en-têtes. Pour plus d'informations sur les conditions de trajectoire, consultezCorrespond aux conditions du chemin de base.
- Actions
-
Les actions sont le résultat de la correspondance de conditions avec une règle de routage. Actuellement, la seule action prise en charge consiste à invoquer une étape d'une API REST.
Chaque règle ne peut comporter qu'une seule action.
- Priorité
-
La priorité détermine l'ordre dans lequel les règles sont évaluées, de la valeur la plus faible à la valeur la plus élevée. Les règles ne peuvent pas avoir la même priorité.
Vous pouvez définir une priorité comprise entre 1 et 1 000 000. Si une règle a une priorité, API Gateway l'évalue en premier. Lorsque vous créez une règle, nous vous recommandons d'ajouter des écarts dans les priorités. Cela vous permet de changer la priorité des règles et d'en ajouter de nouvelles. Pour de plus amples informations, veuillez consulter Modifier la priorité d'une règle de routage.
Pour des exemples de la façon dont API Gateway évalue les règles de routage, consultezExemples de la façon dont API Gateway évalue les règles de routage.
Types de conditions de règles de routage API Gateway
La section suivante décrit les types de conditions des règles de routage. API Gateway ne correspond à une règle que si toutes les conditions sont remplies.
Faire correspondre les conditions des en-têtes
Lorsque vous créez une condition d'en-tête, vous pouvez faire correspondre le nom de l'en-tête et la valeur globale de l'en-tête, par exempleHello:World
. API Gateway utilise une correspondance littérale pour valider les conditions des en-têtes de correspondance. Votre condition peut utiliser jusqu'à deux en-têtes AND
entre eux. Par exemple, votre condition peut correspondre si une demande entrante contient Hello:World
etx-version:beta
.
La correspondance du nom d'en-tête ne distingue pas les majuscules des minuscules, mais la valeur globale de l'en-tête fait la distinction majuscules/minuscules. Hello:World
correspondrahello:World
, mais pasHello:world
.
Pour une liste des valeurs d'en-tête restreintes, voir,Restrictions.
Utilisation de caractères génériques avec des conditions d'en-tête
Vous ne pouvez utiliser que des caractères génériques dans la valeur globale de l'en-tête, et le caractère générique doit être*prefix-match
, suffix-match*
ou. *contains*
Le tableau suivant présente des exemples d'utilisation des caractères génériques pour faire correspondre les conditions d'en-tête.
Conditions d'en-tête | Demandes conformes à la règle de routage | Demandes qui ne correspondent pas à la règle de routage |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aucun |
Si vous créez des conditions pour plusieurs valeurs d'en-tête, par exempleAccept:application/json,text/xml
, nous vous recommandons de les utiliser *contains*
pour vos conditions d'en-tête et d'éviter de créer des conditions à l'aide de la virgule (,
).
Comme API Gateway correspond littéralement aux conditions d'en-tête, les correspondances sémantiques peuvent être acheminées différemment. Le tableau suivant montre les différences entre les résultats des règles de routage.
Conditions d'en-tête | Demandes conformes à la règle de routage | Demandes qui ne correspondent pas à la règle de routage |
---|---|---|
|
|
|
|
|
Aucun |
Correspond aux conditions du chemin de base
Lorsque vous créez une condition de chemin de base, si la demande entrante contient le chemin que vous avez spécifié, la règle correspond. La correspondance fait la distinction majuscules/majuscules, le chemin ne New/Users
correspondra donc pas ànew/users
.
Vous ne pouvez créer une condition de chemin de base que pour un seul chemin de base.
Pour obtenir la liste des conditions de trajectoire de base restreintes,Restrictions.
Dénudez la trajectoire de base en fonction des conditions de la trajectoire de base
Lorsque vous créez une condition de trajectoire de bain, vous pouvez choisir de supprimer la trajectoire de base. Lorsque vous supprimez le chemin de base, API Gateway supprime le chemin de base correspondant entrant lorsqu'il appelle l'API cible. Il s'agit du même comportement que lorsque vous utilisez un mappage d'API. Lorsque vous ne supprimez pas le chemin de base, API Gateway transmet l'intégralité du chemin de base à l'API cible. Nous vous recommandons de supprimer le chemin de base uniquement lorsque vous recréez un mappage d'API.
Le tableau suivant présente des exemples illustrant la manière dont API Gateway évalue la condition du chemin de base de la bande.
Condition | Tracé de base de la bande | Demande entrante | Résultat |
---|---|---|---|
Si le chemin de base contient |
True |
|
API Gateway appelle la |
Si le chemin de base contient |
False |
|
API Gateway appelle la |
Si le chemin de base contient |
True |
|
API Gateway appelle la |
Si le chemin de base contient |
False |
|
API Gateway appelle la |
Si le chemin de base contient |
True |
|
API Gateway appelle la |
Si le chemin de base contient |
False |
|
API Gateway appelle la |
Restrictions
-
L'API cible et le nom de domaine personnalisé doivent se trouver dans le même AWS compte.
Chaque règle peut avoir une API cible.
-
Vous ne pouvez créer une règle de routage que pour un nom de domaine personnalisé privé vers une API privée et pour un nom de domaine personnalisé public vers une API publique. On ne peut pas mélanger les ressources publiques et privées.
-
Si votre nom de domaine personnalisé comporte des mappages d'API à la fois vers REST et HTTP APIs, les règles de routage ne sont pas prises en charge.
Le numéro de priorité maximal est de 1 000 000.
-
Restrictions d'en-tête :
Chaque
anyOf
condition ne peut contenir qu'une seule valeur d'en-tête.-
Les seuls caractères autorisés pour les noms d'en-tête et les valeurs des globes d'en-tête sont spécifiés par la RFC 7230
, à savoir a-z
,A-Z
0-9
, et les caractères spéciaux suivants :.*?-!#$%&'.^_`|~
-
Vous pouvez utiliser un caractère générique dans la valeur globale de l'en-tête, mais le caractère générique doit être
*prefix-match
,suffix-match*
ou.*contains*
Vous ne pouvez pas utiliser*
une valeur globale au milieu d'un en-tête. Les noms d'en-tête génériques ne sont pas pris en charge.
Le nom de l'en-tête doit comporter moins de 40 caractères.
La valeur globale de l'en-tête doit être inférieure à 128 caractères.
La valeur globale de l'en-tête pour une correspondance d'infixe doit être inférieure à 40 caractères.
Les en-têtes suivants ne sont pas pris en charge en tant que conditions :
access-control-*
apigw-*
Authorization
Connection
Content-Encoding
Content-Length
Content-Location
Forwarded
Keep-Alive
Origin
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
x-amz-*
x-amzn-*
X-Forwarded-For
X-Forwarded-Host
X-Forwarded-Proto
Via
-
Restrictions relatives au chemin de base :
La longueur du chemin de base doit être inférieure à 128 caractères.
-
Le chemin de base ne doit contenir que des lettres, des chiffres et les caractères suivants :
$-_.+!*'()/
Le chemin de base ne peut pas commencer ou se terminer par une barre oblique inverse (
/
).