Limitation du nombre de demandes aux éléments dorsaux du service de passerelle d'API

Découvrez comment utiliser une politique de demande pour limiter le nombre de demandes envoyées aux services dorsaux avec la passerelle d'API.

Ayant créé une passerelle d'API et déployé une ou plusieurs API sur cette dernière, il est possible que vous vouliez généralement limiter le débit auquel les clients d'API peuvent effectuer des demandes aux services dorsaux. Par exemple, pour effectuer les opérations suivantes :

  • Maintenir la haute disponibilité et l'utilisation adéquate des ressources en évitant que les éléments dorsaux ne soient submergés par un nombre de demandes trop important.
  • Prévenir les attaques par déni de service.
  • Restreindre les coûts de consommation des ressources.
  • Limiter l'utilisation des API par les utilisateurs des clients pour les monétiser.

Vous appliquez une limite de débit globalement à toutes les routes d'une spécification de déploiement d'API.

Si une demande est refusée car la limite du débit a été dépassée, l'en-tête de la réponse spécifie à quel moment la demande peut être resoumise.

Vous utilisez une politique de demande pour limiter le nombre de demandes (voir Ajout de politiques de demande et de réponse aux spécifications de déploiement d'API).

Vous pouvez ajouter une politique de demande de limite de débit à une spécification de déploiement d'API comme suit :

  • En utilisant la console.
  • En modifiant un fichier JSON.

Utilisation de la console pour ajouter des politiques de demande de limite de débit

Pour ajouter une politique de demande de limite de débit à une spécification de déploiement d'API à l'aide de la console :

  1. Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option À partir de zéro et entrez les détails dans la page Informations de base.

    Pour plus d'informations, voir Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et Mise à jour d'une passerelle d'API.

  2. Dans la section Politiques de demande d'API de la page Informations de base, sélectionnez le bouton Ajouter à côté du champ Limitation de débit et spécifiez les données suivantes :

    • Nombre de demandes par seconde : Nombre maximal de demandes par seconde à envoyer au déploiement d'API.
    • Type de limite de débit : Mode d'application du nombre maximal du seuil de demandes par seconde. Vous pouvez spécifier que le maximum s'applique au nombre de demandes envoyées à partir d'un client d'API (identifié par son adresse IP) ou au nombre total de demandes envoyées à partir de tous les clients d'API.
  3. Sélectionnez Enregistrer les modifications.

  4. Sélectionnez Suivant et spécifiez les options d'authentification dans la page Authentification.

    Pour plus d'informations sur les options d'authentification, voir Ajout de l'authentification et de l'autorisation aux déploiements d'API.

  5. Sélectionnez Suivant pour entrer les détails des routes individuelles du déploiement d'API dans la page Routes. Notez que vous ne pouvez pas appliquer de politiques de limite de débit à des routes individuelles de la spécification du déploiement d'API.

  6. Sélectionnez Suivant pour vérifier les détails que vous avez entrés pour le déploiement d'API.
  7. Sélectionnez Créer ou enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
  8. (Facultatif) Vérifiez que l'API a été déployée avec succès en l'appelant (voir Appel d'une API déployée sur une passerelle d'API).

Modification d'un fichier JSON pour ajouter des politiques de demande de limite de débit

Pour ajouter une politique de demande de limite de débit à une spécification de déploiement d'API dans un fichier JSON :

  1. Dans votre éditeur JSON préféré, modifiez la spécification de déploiement d'API existante à laquelle vous souhaitez ajouter une limite de demande ou créez une spécification de déploiement d'API (voir Création d'une spécification de déploiement d'API).

    Par exemple, la spécification de déploiement d'API de base suivante définit une simple fonction sans serveur Hello World du service des fonctions pour OCI en tant qu'élément dorsal unique :

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Insérez une section requestPolicies avant la section routes, si elle n'existe pas déjà. Par exemple :

    {
      "requestPolicies": {},													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  3. Ajoutez la politique rateLimiting suivante à la nouvelle section requestPolicies pour l'appliquer à toutes les routes définies dans la spécification :

    {
      "requestPolicies": {
        "rateLimiting": {
          "rateKey": "<ratekey-value>",
          "rateInRequestsPerSecond": <requests-per-second>
        }
      },													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }

    où :

    • <ratekey-value> spécifie si le nombre maximal du seuil de demandes s'applique au nombre de demandes en provenance de clients d'API individuels (identifiés par leur adresse IP) ou au nombre total de demandes envoyées au service dorsal. Les valeurs valides sont CLIENT_IP et TOTAL.
    • <requests-per-second> est le nombre maximal de demandes par seconde à envoyer au déploiement d'API.

    Par exemple :

    {
      "requestPolicies": {
        "rateLimiting": {
          "rateKey": "CLIENT_IP",
          "rateInRequestsPerSecond": 10
        }
      },													
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  4. Enregistrez le fichier JSON contenant la spécification de déploiement d'API.
  5. Utilisez comme suit la spécification de déploiement d'API lorsque vous créez ou mettez à jour un déploiement d'API :

    • En spécifiant le fichier JSON dans la console lorsque vous sélectionnez l'option Charger une API existante.
    • En spécifiant le fichier JSON dans une demande à l'API REST du service Passerelle d'API.

    Pour plus d'informations, voir Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et Mise à jour d'une passerelle d'API.

  6. (Facultatif) Vérifiez que l'API a été déployée avec succès en l'appelant (voir Appel d'une API déployée sur une passerelle d'API).