Règles de routage pour connecter les étapes de l'API à un nom de domaine personnalisé pour REST APIs - Amazon API Gateway

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:Worldcorrespondrahello: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

x-version: a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a

  • x-version: alpha

  • x-version: beta

  • x-version: account

  • x-version: backup

  • x-version: users

x-version: *a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a* et x-version: *b*

  • x-version: backup

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: users

x-version: b* et x-version: *a

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: users

x-version: *

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

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

Accept: *json

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Accept: *json*

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

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 PetStoreShopper/dogs

True

GET https://example.com/PetStoreShopper/dogs

API Gateway appelle la GET méthode de la / ressource.

Si le chemin de base contientPetStoreShopper/dogs.

False

GET https://example.com/PetStoreShopper/dogs

API Gateway appelle la GET méthode de la PetStoreShopper/dogs ressource.

Si le chemin de base contient PetStoreShopper

True

GET https://example.com/PetStoreShopper/dogs

API Gateway appelle la GET méthode de la dogs ressource.

Si le chemin de base contient PetStoreShopper

False

GET https://example.com/PetStoreShopper/dogs

API Gateway appelle la GET méthode de la PetStoreShopper/dogs ressource.

Si le chemin de base contient PetStoreShopper

True

GET https://example.com/PetStoreShopper?birds=available

API Gateway appelle la GET méthode de la / ressource avec le paramètre de chaîne de requêtebirds=available.

Si le chemin de base contient PetStoreShopper

False

GET https://example.com/PetStoreShopper?birds=available

API Gateway appelle la GET méthode de la /PetStoreShopper ressource avec le paramètre de chaîne de requêtebirds=available.

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, à savoira-z, A-Z0-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 (/).