Ajouter la règle Spike Arrest à votre API

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Points abordés

Dans ce tutoriel, vous allez apprendre à effectuer les opérations suivantes :

  • Ajoutez une règle qui affecte la requête et la réponse.
  • Examinez les effets de la règle.

Prérequis

Ajouter la règle SpikeArrest

Dans ce tutoriel, vous ajouterez et configurer la règle SpikeArrest pour protéger le service cible contre les pics de trafic soudains pouvant être causés par une augmentation de l'utilisation, des bugs clients ou des attaques malveillantes. Lorsque le nombre de requêtes dépasse la limitation du débit, l'API renvoie une erreur HTTP 429.

Nouvel éditeur de proxys

Ajoutez la règle SpikeArrest à un proxy d'API :

  1. Si vous utilisez l'interface utilisateur d'Apigee dans la console Cloud : sélectionnez Développement de proxys > Proxys d'API.

    Si vous utilisez la version classique de l'interface utilisateur d'Apigee : sélectionnez Développer > Proxys d'API, puis dans le volet Proxys, sélectionnez l'environnement du proxy.

    Si vous avez suivi le tutoriel de démarrage, vous pouvez l'ajouter au proxy d'API que vous avez créé à la section Créer un proxy d'API.

  2. Cliquez sur l'onglet Développer :
  3. Dans le volet de gauche, cliquez sur le bouton + de la ligne Règles.
  4. Dans la boîte de dialogue Créer une règle, cliquez dans le champ Sélectionner un type de règle et faites défiler la page jusqu'à Gestion du trafic, puis sélectionnez SpikeArrest.

  5. Vous pouvez éventuellement modifier les champs Name (Nom) et Display name (Nom à afficher) de la règle. Par défaut, Apigee fournit un préfixe court pour le nom de la règle (SA- dans le cas présent). Vous pouvez ajouter une séquence de mots descriptifs, séparés par des tirets, après le préfixe. Consultez les conventions d'attribution de noms.

    Boîte de dialogue "Créer une règle".

    Lorsque vous avez terminé, cliquez sur Create (Créer) pour créer la règle.

Maintenant que vous avez créé la règle SpikeArrest, vous pouvez l'ajouter à une étape dans le PreFlow.

  1. Sélectionnez Proxy Endpoints > default > PreFlow (Points de terminaison du proxy > Par défaut > PreFlow) dans le volet de gauche :

    Points de terminaison cibles pour la sélection du PreFlow dans l'explorateur de proxys

    Remarque : Vous devrez peut-être développer l'éditeur visuel dans le volet de droite pour afficher tous les éléments. Pour ce faire, cliquez sur le séparateur et faites-le glisser entre l'éditeur visuel et l'éditeur de texte.

  2. Cliquez sur le bouton + à côté de PreFlow dans le volet Réponse en bas à droite de l'éditeur visuel :

    Cliquez sur le bouton + à côté de "PreFlow" dans le volet "Réponse"

  3. Dans la boîte de dialogue Ajouter une règle, sélectionnez la règle Spike Arrest.
  4. Cliquez sur Ajouter pour associer la règle.

    La règle Spike Arrest s'affiche désormais dans le volet Réponse :

    Règle Spike Arrest affichée dans le volet de réponse

Maintenant que vous avez associé la règle Spike Arrest au PreFlow, vous pouvez essayer de modifier le code de la règle :

  1. Dans le volet Response, sélectionnez SA-.

    Règle Spike Arrest affichée dans l'onglet "Règles"

  2. L'éditeur de texte affiche le code XML du proxy, y compris l'étape de la règle SpikeArrest dans l'élément Response du flux PreFlow.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SpikeArrest continueOnError="false" enabled="true" name="SA-">
        <DisplayName>SA-</DisplayName>
        <Properties/>
        <Identifier ref="request.header.some-header-name"/>
        <MessageWeight ref="request.header.weight"/>
        <Rate>30ps</Rate>
    </SpikeArrest>
  3. Dans le fichier XML de la règle, remplacez la valeur de l'élément <Rate> par 1pm (ce qui signifie qu'environ deux requêtes sont autorisées toutes les 60 secondes dans le cloud).

    Vous pouvez spécifier la fréquence sous forme de valeur entière par minute (pm) ou par seconde (ps). Il s'agit d'une limite très faible, utilisée uniquement dans ce tutoriel pour illustrer la règle. En règle générale, vous le définissez sur une limite beaucoup plus élevée.

    Notez que la valeur Rate dans l'inspecteur de propriétés passe également à 1pm. Vous pouvez également modifier la valeur Rate dans l'inspecteur de propriétés. Cela sera reflété dans la vue XML.

  4. Cliquez sur Save (Enregistrer) pour enregistrer vos modifications dans la révision actuelle.

Éditeur de proxy classique

Ajoutez la règle SpikeArrest à un proxy d'API :

  1. Connectez-vous à l'UI Apigee.
  2. Sélectionnez Développer > Proxys API dans la barre de navigation de gauche.
  3. Sélectionnez le proxy d'API auquel vous souhaitez ajouter la règle SpikeArrest.

    Si vous avez suivi le tutoriel de démarrage, vous pouvez l'ajouter au proxy d'API que vous avez créé à la section Créer un proxy d'API.

  4. Dans l'éditeur du nouveau proxy d'API, cliquez sur l'onglet Développer :

    L'onglet "Développer" se trouve entre les onglets "Présentation" et "Trace".

    L'éditeur de proxy d'API vous permet de voir la structure de votre proxy d'API et de configurer son flux. L'éditeur présente une représentation visuelle du flux de messages de requêtes et de réponses de votre proxy, ainsi qu'un affichage modifiable du XML sous-jacent qui définit le proxy.

  5. Dans le volet de navigation de gauche, cliquez sur PreFlow sous Proxy Endpoints > default. (Les autres tutoriels couvrent le concept de flux.)
  6. Cliquez sur le bouton +Step supérieur, correspondant au PreFlow de requêtes. Une liste classée de toutes les règles que vous pouvez créer s'affiche.

    Clic sur "Step" dans la requête PreFlow.

  7. Sélectionnez SpikeArrest dans la catégorie "Traffic Management" (Gestion du trafic). La boîte de dialogue New Policy (Nouvelle règle) s'affiche :

    Créer une règle SpikeArrest

  8. Conservez les noms par défaut, puis cliquez sur Add (Ajouter). La nouvelle règle est associée au flux PreFlow d'une requête.
  9. Dans le navigateur, assurez-vous que PreFlow sous Proxy Endpoints > par défaut est toujours sélectionné et notez les éléments suivants dans l'éditeur de proxy d'API :
    • La nouvelle règle SpikeArrest-1 est ajoutée sous Policies (Règles) dans le navigateur situé sur la gauche de l'éditeur de proxys d'API.
    • L'icône SpikeArrest-1 est ajoutée à la vue Conception située au centre supérieur de l'éditeur de proxy d'API, qui est une représentation visuelle des flux de messages de votre proxy.
    • Le code XML de la règle est affiché dans la vue Code au bas de l'éditeur de proxy d'API.

    Affichage PreFlow avec la règle SpikeArrest.

  10. Dans le navigateur, sélectionnez SpikeArrest-1 sous "Policies" (Règles) et notez les informations suivantes dans l'éditeur de proxy d'API :
    • Les détails de la règle sont affichés dans la vue Concepteur, en haut au centre de l'éditeur de proxy d'API.
    • Le code XML de la règle est affiché dans la vue Code au bas de l'éditeur de proxy d'API.
    • Les valeurs des attributs et des éléments XML de la règle sont affichées dans l 'inspecteur de propriétés, à droite de l'éditeur de proxy d'API.

    Le volet de l'inspecteur de propriétés affiche les valeurs de la règle SpikeArrest-1

  11. Dans le fichier XML de la règle, remplacez la valeur de l'élément <Rate> par 1pm (ce qui signifie qu'environ deux requêtes sont autorisées toutes les 60 secondes dans le cloud).

    Vous pouvez spécifier la fréquence sous forme de valeur entière par minute (pm) ou par seconde (ps). Il s'agit d'une limite très faible, utilisée uniquement dans ce tutoriel pour illustrer la règle. En règle générale, vous le définissez sur une limite beaucoup plus élevée.

    Notez que la valeur Rate dans l'inspecteur de propriétés passe également à 1pm. Vous pouvez également modifier la valeur Rate dans l'inspecteur de propriétés. Cela sera reflété dans la vue XML.

  12. Cliquez sur Save (Enregistrer) pour enregistrer vos modifications dans la révision actuelle.
  13. Déployez vos modifications à l'aide du bouton Déployer sur :.
  14. Appelez l'API à l'aide de curl en utilisant l'URL de votre domaine :

    curl "http://YOUR_DOMAIN/myproxy"

    où :

    Pour en savoir plus, consultez la page Tester le proxy d'API.

    Assurez-vous que la requête aboutit et que la même réponse XML s'affiche. (Vous pouvez également saisir uniquement l'URL dans un navigateur Web.)

    Essayez ensuite de tester le paramètre Rate de différentes manières :

    • Exécutez la commande curl (ou actualisez la fenêtre du navigateur) deux ou trois fois de plus lors d'une minute pour constater que vous obtenez le message suivant, car vous avez dépassé la limite de débit de la règle :
      {
      "fault": {
        "faultstring":"Spike arrest violation. Allowed rate : 1pm",
        "detail": {
          "errorcode":"policies.ratelimit.SpikeArrestViolation"}
        }
      }

      Si vous essayez d'effectuer d'autres appels dans la minute, vous devriez continuer à recevoir le message d'erreur.

    • Modifiez la règle pour définir la limite <Rate> sur 15pm (ce qui signifie qu'environ deux appels sont autorisés toutes les quatre secondes dans le cloud), puis enregistrez et déployez le proxy d'API.
    • Exécutez la commande curl ou actualisez le navigateur à plusieurs reprises (curl est plus rapide). Notez que si vous effectuez un ou deux appels dans des intervalles de quatre secondes, vos appels aboutissent. Si vous passez les appels plus rapidement, plus de deux en quatre secondes, vous devriez obtenir l'erreur. Toutefois, après chaque intervalle de quatre secondes, vous pouvez continuer à effectuer des appels, au lieu d'être bloqué pendant une minute entière (avec le paramètre 1pm).