Comment éviter les erreurs de type « Rate exceeded » (taux dépassé) dans CloudFormation ?

Dernière mise à jour : 12/04/2022

Je reçois parfois des erreurs « Rate exceeded » lorsque j'utilise AWS CloudFormation. Comment éviter que cette erreur ne se produise ?

Brève description

L'erreur Rate exceeded se produit lorsque les appels d'API vers un service AWS dépassent le nombre maximum de demandes d'API autorisées et que les appels d'API sont limités. En général, ces erreurs sont temporaires et se résolvent d'elles-mêmes à mesure que les appels d'API diminuent.

Pour éviter les erreurs Rate exceeded, vous pouvez :

  • Implémenter un backoff exponentiel
  • Créer ou mettre à jour les piles une par une
  • Utiliser l'attribut DependsOn
  • Demander une augmentation des quotas

Solution

Implémenter un backoff exponentiel

Lorsque vous utilisez des points de terminaison d'API AWS, implémentez un backoff exponentiel pour réduire le nombre d'appels d'API effectués.

L'exemple de code fictif suivant pour un appel d'API;DescribeStacks est configuré pour relancer l'appel d'API après un certain laps de temps :

{
Make ‘DescribeStacks’ API call 

if throttled: wait 2 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 4 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 8 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 16 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 32 sec; Make ‘DescribeStacks’ API call 
}

Créer ou mettre à jour les piles une par une

La création ou la mise à jour simultanée de plusieurs piles CloudFormation peut entraîner de nombreux appels d'API en même temps. Pour éviter que les appels d'API ne dépassent le nombre maximum de demandes d'API autorisées, créez ou mettez à jour une pile à la fois.

Utiliser l'attribut DependsOn

À moins qu'une dépendance ne soit définie entre les ressources, CloudFormation crée et met à jour les ressources en même temps. L'attribut DependsOn définit les dépendances entre les ressources pour contrôler les mises à jour simultanées.

L'attribut DependsOn vous permet de spécifier à quel moment chaque ressource dépendante est créée ou mise à jour. Par exemple, si la ressource B dépend de la ressource A, vous pouvez spécifier que la ressource A doit être créée ou mise à jour avant la ressource B. Cela limite le nombre d'appels d'API effectués en même temps et réduit l'occurrence de limitation. Vous pouvez également utiliser l'attribut DependsOn avec des piles imbriquées.

Demander une augmentation des quotas

Si les solutions précédentes ne vous permettent pas de résoudre votre problème, vous pouvez demander une augmentation des quotas. Avant de demander une augmentation des quotas, identifiez l'appel d'API pour déterminer celui qui dépasse le taux d'appel.

Dans votre demande d'augmentation des quotas, indiquez votre région AWS, la durée de limitation de l'API et la raison de l'augmentation.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?