Comment éviter les erreurs de limitation d'API dans Amazon Route 53 ?
Brève description
Lorsque vous adressez des appels d'API en bloc à Route 53, vous pouvez recevoir une erreur HTTP 400 (Demande erronée).
Un en-tête de réponse contenant un élément Code avec la valeur Throttling et un élément Message avec la valeur Rate exceeded indique une limitation de débit. La limitation de débit se produit lorsque le nombre de demandes d'API est supérieur à la limite stricte de cinq demandes par seconde (par compte).
Si Route 53 ne peut pas traiter la demande avant la demande suivante pour la même zone hébergée, les demandes suivantes sont rejetées avec une autre erreur HTTP 400. L'en-tête de réponse contient les deux éléments suivants :
- Un élément Code avec la valeur PriorRequestNotComplete
- Un élément Message avec la valeur the request was rejected because Route 53 was still processing a prior request (la demande a été rejetée, car Route 53 était encore en train de traiter une demande antérieure).
Les appels d'API des utilisateurs AWS Identity and Access Management (IAM) d’un même compte sont comptabilisés dans le cadre de la limitation globale du débit du compte. Les appels d'API de ces utilisateurs IAM ont également un impact sur les appels d'API effectués à partir de la console de gestion AWS.
Solution
Remarque : Si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.
Pour éviter une limitation de débit, utilisez les méthodes suivantes.
Traitement des demandes par lot
Groupez les opérations individuelles de même type dans une seule opération de modifications par lot pour réduire les appels d'API à l'aide d'AWS CLI ou du kit SDK de votre choix.
Par exemple, vous pouvez demander à créer (CREATE), supprimer (DELETE) ou mettre à jour et insérer (UPSERT) plusieurs enregistrements avec une seule opération de traitement par lot. Utilisez la commande change-resource-record-sets dans AWS CLI pour effectuer des opérations en bloc sur des enregistrements de ressources.
Prenez note des points suivants :
- Les demandes UPSERT (mise à jour et insertion) sont comptabilisées deux fois.
- Les éléments et les caractères sont soumis à des quotas dans les appels d'API change-resource-record-sets.
Utilisation des nouvelles tentatives après erreur et du backoff exponentiel
Pour éviter une limitation, ajoutez les nouvelles tentatives après erreur et le backoff exponentiel à vos appels d'API Route 53. Par exemple, utilisez un algorithme de backoff exponentiel simple qui tente à nouveau l'appel en 2^i secondes, i représentant le nombre de nouvelles tentatives.
Randomisation des heures de début
Randomisez l'heure de début des appels d'API Route 53. Vérifiez que la logique n'est pas traitée par plusieurs applications à la fois. Les demandes simultanées peuvent provoquer une limitation.
Introduction d'un « temps de repos » entre les appels
Si les appels de fonctions de code à destination d'API Route 53 sont consécutifs, ajoutez un « temps de repos » entre les deux appels pour réduire le risque de limitation.
Informations connexes
Quotas (Route 53)