Comment dois-je procéder en cas de limitation des appels d’API ou de dépassement de débit dans Elastic Beanstalk ?

Date de la dernière mise à jour : 17/10/2019

Comment dois-je procéder en cas de dépassement des appels d’API ou de dépassement de débit lors de l’utilisation d’AWS Elastic Beanstalk ?

Courte description

Les appels d’API en direction de n’importe quel service AWS ne peuvent pas excéder le taux maximal autorisé pour chaque compte et région AWS, et ce même s’ils proviennent d’une application, de l’interface en ligne de commande AWS ou d’AWS Management Console. Si les requêtes d’API dépassent le taux maximal, le message d’erreur « Dépassement du débit » s’affiche et les appels d’API sont ensuite limités.

Des messages d’erreur peuvent s’afficher en cas d’appels d’API effectués directement en direction d’Elastic Beanstalk, ainsi que d’autres services AWS (tels qu’AWS CloudFormation) gérés par ce dernier.

Résolution

Pour éviter que le message « Dépassement du débit » ne s’affiche ou qu’une limitation ne se produise, essayez d’effectuer les procédures suivantes :

Validation des appels d’API limités

1.    Dans votre flux d’événements Elastic Beanstalk, recherchez le message d’erreur concerné. Prenez note de la période à laquelle vous l’avez reçu.

Remarque : si les appels d’API proviennent d’une application ou d’un script situé(e) hors d’Elastic Beanstalk, recherchez cette information dans les journaux ad hoc.

2.    En cas de requêtes détectées et associées au message d’erreur RequestLimitExceeded, utilisez AWS CloudTrail pour consulter la liste des événements et identifier les éléments suivants : eventName, eventSource et userAgent.

Validation des appels de type « describe » dans votre environnement Elastic Beanstalk

Si le nombre d’appels de type « describe » est trop élevé, ceci a une incidence sur celui des requêtes d’API mesurées par rapport au taux autorisé.

Par exemple, vous pouvez valider les appels de type « describe », afin qu’une instance Amazon Elastic Compute Cloud (Amazon EC2) soit détectée dans votre environnement Elastic Beanstalk, en effectuant l’une des procédures ci-dessous.

Utilisez l’appel d’API EnvironmentResourceDescription. Consultez l’exemple suivant :

$ aws ec2 describe-instances --filters Name="tag:elasticbeanstalk:environment-id",Values="Your_Environment_ID"

-ou-

Utilisez l’appel d’API DescribeInstances avec des filtres pour vos balises Elastic Beanstalk. Consultez l’exemple suivant :

$ aws ec2 describe-instances --filters Name="tag:elasticbeanstalk:environment-name",Values="Your_Environment_Name"

Remarque : le taux d’appels d’API DescribeInstances est souvent associé à une limite de débit plus élevée que l’appel d’API EnvironmentResourceDescription.

Vérification des appels provenant d’applications tierces

Les applications tierces peuvent effectuer des appels continus en direction d’Elastic Beanstalk ou d’autres services AWS gérés par ce dernier.

Pour vérifier que vos applications tierces n’effectuent pas d’appels inutiles en direction d’Elastic Beanstalk ou des services intégrés Elastic Beanstalk, utilisez CloudTrail afin d’identifier l’agent utilisateur qui effectue les appels d’API.

Remarque : les applications tierces, telles que Datadog ou New Relic, peuvent effectuer des appels d’API en direction d’Elastic Beanstalk. Pour obtenir des informations supplémentaires, cliquez ici si vous utilisez Datadog et ici si vous utilisez New Relic. Les applications tierces ne sont pas prises en charge par AWS.

Logiques de type « Nouvelle tentative après erreur » et algorithmes de temporisation exponentiels

Les logiques de type « Nouvelle tentative après erreur » et les algorithmes de temporisation exponentiels permettent de limiter le taux d’appels d’API.

Remarque : chaque kit SDK AWS permet d’implémenter une logique de type « Nouvelle tentative automatique » et des algorithmes de temporisation exponentiels.

Demande d’augmentation de la limite de service dans le centre AWS Support

Avant de demander une augmentation de la limite de service, procédez comme suit :

  • Identifiez l’appel d’API et le taux d’appels ;
  • Essayez d’utiliser les logiques de type « Nouvelle tentative après erreur » ou les algorithmes de temporisation exponentiels ;
  • Identifiez votre région AWS, la période liée aux problèmes de limitation et la situation concernée.

Vous pouvez ensuite effectuer une demande d’augmentation de la limite de service.