Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’APPLIQUE À : Tous les niveaux de Gestion des API
En fournissant un objet ProxyError, Gestion des API Azure permet aux éditeurs de répondre aux conditions d’erreur, qui peuvent se produire pendant le traitement des demandes. L’objet ProxyError est accessible via la propriété context.LastError. Les stratégies de la section de stratégie on-error peuvent utiliser l’objet ProxyError . Cet article est une ressource de référence au sujet des fonctionnalités de gestion des erreurs dans la Gestion des API Azure.
Gestion des erreurs dans la Gestion des API
Les stratégies de la Gestion des API Azure sont divisées en sections inbound, backend, outbound et on-error, comme l’indique l’exemple suivant.
<policies>
<inbound>
<!-- statements to be applied to the request go here -->
</inbound>
<backend>
<!-- statements to be applied before the request is
forwarded to the backend service go here -->
</backend>
<outbound>
<!-- statements to be applied to the response go here -->
</outbound>
<on-error>
<!-- statements to be applied if there is an error
condition go here -->
</on-error>
</policies>
Pendant le traitement d'une demande, les étapes intégrées au processus s'exécutent avec toutes les politiques qui sont dans l'étendue de la requête. Si une erreur se produit, le traitement passe immédiatement à la section de stratégie on-error.
La section de stratégie on-error peut être utilisée, quelle que soit l’étendue. Les éditeurs d’API peuvent configurer un comportement personnalisé, par exemple la journalisation de l’erreur sur Azure Event Hubs ou la création d’une nouvelle réponse pour revenir à l’appelant.
Note
La on-error section n’est pas présente dans les stratégies par défaut. Pour ajouter la section on-error à une stratégie, accédez à la stratégie de votre choix dans l’éditeur de stratégies et ajoutez-la. Pour plus d’informations sur la configuration des stratégies, consultez la page Stratégies dans la Gestion des API.
S’il n’existe aucune on-error section, les appelants reçoivent 400 ou 500 messages de réponse HTTP si une condition d’erreur se produit.
Politiques autorisées en cas d'erreur
Les stratégies suivantes peuvent être utilisées dans la section de stratégie on-error.
- choisir
- set-variable
- rechercher et remplacer
- return-response
- set-header
- méthode de définition
- set-status
- send-request
- envoyer-une-requête-unidirectionnelle
- log-to-eventhub
- json-to-xml
- xml-to-json
- limit-concurrency
- mock-response
- réessayer
- trace
DernièreErreur
Lorsqu'une erreur se produit et que le contrôle passe à la on-error section de stratégie, l'erreur est stockée dans la propriété contexte.LastError. Les stratégies dans la section on-error peuvent accéder à context.LastError.
LastError contient les propriétés suivantes.
| Nom | Catégorie | Descriptif | Obligatoire |
|---|---|---|---|
Source |
ficelle | Nom de l’élément où l’erreur s’est produite. Peut être une stratégie ou un nom d’étape de pipeline préconfigurée. | Oui |
Reason |
ficelle | Code d'erreur convivial pour les machines, utilisable pour gérer les erreurs. | Non |
Message |
ficelle | Description lisible de l’erreur. | Oui |
Scope |
ficelle | Nom de l’étendue dans laquelle l’erreur s’est produite. | Non |
Section |
ficelle | Nom de la section où l’erreur s’est produite. Valeurs possibles : inbound, backend, outboundou on-error. |
Non |
Path |
ficelle | Spécifie la hiérarchie de stratégie imbriquée, par exemple choose[3]\\when[2]. Plusieurs instances d’une stratégie imbriquée sont indexées à partir de 1. |
Non |
PolicyId |
ficelle | Valeur de l’attribut id, s’il est spécifié par le client, sur la stratégie où l’erreur s’est produite. |
Non |
Conseil
Vous pouvez accéder au code d’état via context.Response.StatusCode.
Note
Toutes les stratégies ont un attribut id facultatif qui peut être ajouté à l’élément racine de la stratégie. Si cet attribut est présent dans une stratégie lorsqu’une condition d’erreur se produit, vous pouvez récupérer la valeur de l’attribut à l’aide de la context.LastError.PolicyId propriété.
Erreurs prédéfinies pour les étapes intégrées
Les erreurs suivantes sont prédéfinies pour les conditions d’erreur qui peuvent se produire lors de l’évaluation des étapes de traitement intégrées.
| Origine | État | Motif | Message |
|---|---|---|---|
| paramétrage | L’URI ne correspond à aucune API ou opération | OpérationIntrouvable | Impossible de faire correspondre la demande entrante à une opération. |
| autorisation | Clé d’abonnement non fournie. | CléD'abonnementNonTrouvée | Accès refusé en raison de l’absence de clé d’abonnement. Veillez à inclure la clé d’abonnement pour effectuer des demandes auprès de cette API. |
| autorisation | La valeur de la clé d’abonnement n’est pas valide. | Clé d'abonnement invalide | Accès refusé en raison d’une clé d’abonnement non valide. Veillez à fournir une clé valide pour un abonnement actif. |
| plusieurs | Le client a abandonné une connexion en aval (d’un client à une passerelle Gestion des API) pendant que la requête était en attente | ClientConnectionFailure | multiple |
| multiple | Le serveur principal a abandonné ou n’a pas pu établir une connexion en amont (d’une passerelle Gestion des API vers un service back-end) | Échec de connexion au backend | multiple |
| multiple | Une exception runtime s’est produite lors de l’évaluation d’une expression particulière | Échec d'évaluation de la valeur de l'expression | multiple |
Erreurs prédéfinies pour les stratégies
Les erreurs suivantes sont prédéfinies pour les conditions d’erreur qui peuvent se produire lors de l’évaluation de la stratégie.
| Origine | État | Motif | Message |
|---|---|---|---|
| limitation du taux | Limite de débit dépassée. | LimiteDeTauxDépassée | Limite de débit dépassée. |
| Quota | Quota dépassé | QuotaDépassé | Quota de volume d’appels dépassé. Le quota sera réapprovisionné dans xx:xx:xx. \- ou - Quota de bande passante épuisé. Le quota sera réapprovisionné dans xx:xx:xx. |
| jsonp | La valeur du paramètre de rappel n’est pas valide (contient des caractères incorrects). | CallbackParameterInvalid | La valeur du paramètre de rappel {callback-parameter-name} n’est pas un identificateur JavaScript valide. |
| filtre IP | Impossible d’analyser l’adresse IP de l’appelant à partir de la demande. | Échec de l'analyse de l'IP de l'appelant | Impossible d’établir l’adresse IP de l’appelant. Accès refusé. |
| filtre IP | L’adresse IP de l’appelant n’est pas dans la liste autorisée | AdresseIpAppelantNonAutorisée | L’adresse IP de l’appelant {ip-address} n’est pas autorisée. Accès refusé. |
| filtre IP | L’adresse IP de l’appelant figure dans la liste de blocage. | L'adresse IP de l'appelant est bloquée | L’adresse IP de l’appelant est bloquée. Accès refusé. |
| check-header | L’en-tête requis n’est pas présenté ou sa valeur est manquante. | En-têteNonTrouvé | En-tête {header-name} introuvable dans la demande. Accès refusé. |
| check-header | L’en-tête requis n’est pas présenté ou sa valeur est manquante. | ValeurEntêteNonPermise | La valeur {header-value} de l’en-tête {header-name} n’est pas autorisée. Accès refusé. |
| validate-jwt | Json Web Token (JWT) est manquant dans la requête | TokenNotPresent (Jeton non présent) | JWT non présent. |
| validate-jwt | Échec de validation de la signature. | SignatureDuJetonInvalide | <message de la bibliothèque jwt>. Accès refusé. |
| validate-jwt | Audience non valide. | AudienceDeJetonNonAutorisée | <message de la bibliothèque jwt>. Accès refusé. |
| validate-jwt | Émetteur non valide. | Émetteur de jeton non autorisé | <message de la bibliothèque jwt>. Accès refusé. |
| validate-jwt | Jeton expiré. | TokenExpired | <message de la bibliothèque jwt>. Accès refusé. |
| validate-jwt | La clé de signature n’a pas été résolue par ID | TokenSignatureKeyNotFound | <message de la bibliothèque jwt>. Accès refusé. |
| validate-jwt | Les données requises sont manquantes dans le jeton. | TokenClaimNotFound | JWT manque les revendications suivantes : <c1>, <c2>, ... Accès refusé. |
| validate-jwt | Incompatibilité des valeurs des revendications. | ValeurDeRéclamationDuJetonNonAutorisée | La réclamation {claim-name} valeur de {claim-value} n’est pas autorisée. Accès refusé. |
| validate-jwt (valider le token JWT) | Autres échecs de validation. | JwtInvalid | <message de la bibliothèque JWT> |
| transmettre-une-demande ou envoyer-une-demande | Le code d’état de la réponse HTTP et les en-têtes n’ont pas été reçus du serveur principal dans le délai d’expiration configuré | Délai d'attente | multiple |
Exemple
Définissez une stratégie d’API sur la valeur suivante :
<policies>
<inbound>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<set-header name="ErrorSource" exists-action="override">
<value>@(context.LastError.Source)</value>
</set-header>
<set-header name="ErrorReason" exists-action="override">
<value>@(context.LastError.Reason)</value>
</set-header>
<set-header name="ErrorMessage" exists-action="override">
<value>@(context.LastError.Message)</value>
</set-header>
<set-header name="ErrorScope" exists-action="override">
<value>@(context.LastError.Scope)</value>
</set-header>
<set-header name="ErrorSection" exists-action="override">
<value>@(context.LastError.Section)</value>
</set-header>
<set-header name="ErrorPath" exists-action="override">
<value>@(context.LastError.Path)</value>
</set-header>
<set-header name="ErrorPolicyId" exists-action="override">
<value>@(context.LastError.PolicyId)</value>
</set-header>
<set-header name="ErrorStatusCode" exists-action="override">
<value>@(context.Response.StatusCode.ToString())</value>
</set-header>
<base />
</on-error>
</policies>
L’envoi d’une requête non autorisée entraîne la réponse suivante :
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste exhaustive des déclarations de stratégie et de leurs paramètres
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d'extraits de politique
- dépôt d'exemples de politiques
- Ensemble d'outils de stratégie pour la gestion des API Azure
- Obtenez de l’aide de Copilot pour créer, expliquer et dépanner des politiques