Comment résoudre les erreurs de limitation de l'API ou de « Taux dépassé » pour IAM et AWS STS ?

Lecture de 4 minute(s)
0

Mon application reçoit un message d'erreur similaire au suivant : « Throttling: Rate exceeded, status code: 400, » (Limitation : Taux dépassé, code d'état : 400)

Brève description

Les appels d'API provenant de la console de gestion AWS, de l'AWS Command Line Interface (AWS CLI) et des applications contribuent à une limite de taux maximale pour votre compte AWS.

Remarque : les limites de taux de service AWS ne peuvent pas être augmentées.

Solution

Suivez ces bonnes pratiques pour éviter les erreurs de limitation.

  • Implémentez le backoff exponentiel dans le code de votre application. Le backoff exponentiel permet des attentes plus longues à chaque fois qu'un appel d'API vers AWS est limité. Selon l'application, le nombre maximal de délais et le nombre maximal de nouvelles tentatives peuvent varier.
    Remarque : le SDK AWS implémente la logique de nouvelle tentative automatique et les algorithmes de backoff exponentiel.
  • Certaines applications peuvent implémenter la mise en cache pour réduire le taux d'appels d'API. Par exemple, si votre application appelle l'API AssumeRole pour un flux entre comptes, les informations d'identification temporaires que vous avez reçues peuvent être stockées et réutilisées pour plusieurs appels entre comptes. Cela signifie que vous n'avez pas besoin d'effectuer un nouvel appel AssumeRole pour chaque appel d'API entre comptes effectué.
  • Si votre application appelle AssumeRole et met en cache les informations d'identification, vous pouvez vérifier la durée maximale de session des informations d'identification temporaires du rôle. En allongeant la durée des informations d'identification temporaires, vous vous assurez de ne pas avoir à appeler AssumeRole aussi souvent.
  • Répartissez vos appels d'API sur une période plus longue au lieu d'appeler les API en une seule fois. Par exemple, les applications qui ont pour tâche quotidienne d'appeler SimulatePrincipalPolicy ou GenerateServiceLastAccessedDetails pour auditer les autorisations des utilisateurs et des rôles AWS Identity and Access Management (IAM). Vous pouvez échelonner les appels d'API au lieu de les exécuter en même temps.
  • Pour les applications qui modifient dynamiquement les autorisations de la politique IAM à l'aide d'appels d'API tels que CreatePolicyVersion, envisagez une autre méthode. Par exemple, vous pouvez utiliser des politiques de session pendant une hypothèse de rôle IAM.
  • Pour les erreurs de limitation d'AWS Security Token Service (AWS STS), pensez à utiliser des points de terminaison STS régionaux au lieu d'envoyer tous les appels AWS STS au point de terminaison global. Chaque point de terminaison possède sa propre limitation. L'utilisation de points de terminaison AWS STS régionaux peut offrir aux applications un temps de réponse plus rapide lors des appels d'API AWS STS.
  • Si vous ne savez pas quel utilisateur ou rôle IAM de votre compte AWS effectue un grand nombre d'appels d'API, utilisez AWS CloudTrail pour afficher l'historique des événements. Vous pouvez également utiliser Amazon Athena pour exécuter des requêtes SQL et filtrer les journaux CloudTrail. Pour obtenir des instructions, consultez Comment identifier l'appel d'API qui est à l'origine de l'erreur « Taux dépassé » ?
  • Étant donné que les comptes AWS ont des limitations distinctes, envisagez de répartir les charges de travail sur plusieurs comptes à l'aide d'AWS Organizations. La création de nouveaux comptes AWS est gratuite et Organizations fournit une facturation consolidée. L'utilisation des politiques de contrôle des services (SCP) vous permet de contrôler les autorisations maximales des utilisateurs et des rôles IAM sur un compte AWS. Pour plus d'informations, consultez Gestion des comptes via AWS Organizations et Comment démarrer avec AWS Organizations ?

Informations connexes

Comment puis-je créer des tables dans Amazon Athena pour chercher des journaux AWS CloudTrail ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans