Nouvelles tentatives de l’AWS CLI dans l’AWS CLI - AWS Command Line Interface

Cette documentation concerne AWS CLI uniquement la version 1. Pour la documentation relative à la version 2 du AWS CLI, consultez le guide de l'utilisateur de la version 2.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Nouvelles tentatives de l’AWS CLI dans l’AWS CLI

Cette rubrique décrit comment l’AWS CLI pourrait voir des appels aux services AWS échouer en raison de problèmes inattendus. Ces problèmes peuvent se produire côté serveur ou en raison de la limitation du débit du service AWS que vous essayez d’appeler. Ces types de défaillances ne nécessitent généralement pas de traitement spécial et l’appel est automatiquement effectué à nouveau, souvent après une brève période d’attente. L’AWS CLI fournit de nombreuses fonctionnalités pour aider les clients à relancer les appels aux AWS services en cas d’erreurs ou d’exceptions de ce type.

Modes de nouvelle tentative disponibles

Mode de nouvelle tentative standard

Le mode Standard est un ensemble standard de règles de nouvelle tentative dans les kits AWS SDK avec plus de fonctionnalités que les anciens. Il s’agit du mode par défaut pour l’AWS CLI. Le mode standard a été créé pour l’AWS CLI version 2 et il est rétroporté vers l’AWS CLI version 1. Les fonctionnalités du mode standard incluent :

  • Une valeur par défaut de 2 pour le nombre maximum de nouvelles tentatives, soit un total de 3 tentatives d’appel. Cette valeur peut être remplacée par le biais du paramètre de configuration max_attempts.

  • Nouvelles tentatives pour la liste étendue d’erreurs/exceptions suivante :

    • Erreurs/exceptions transitoires

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • Erreurs et exceptions de limitation/limite côté service :

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • Nouvelles tentatives pour les codes d’erreur transitoires non descriptifs. Plus précisément, ces codes d’état HTTP : 500, 502, 503, 504.

  • Toute nouvelle tentative inclura un backoff exponentiel d’un facteur de base de 2 pour un temps d’arrêt maximal de 20 secondes.

Mode de nouvelle tentative classique (par défaut)

Le mode Legacy utilise un ancien gestionnaire de tentatives dont les fonctionnalités sont limitées, notamment :

  • Une valeur par défaut de 4 pour le nombre maximum de nouvelles tentatives, soit un total de 5 tentatives d’appel. Cette valeur peut être remplacée par le biais du paramètre de configuration max_attempts.

  • DynamoDB a une valeur par défaut de 9 pour le nombre maximum de nouvelles tentatives, soit un total de 10 tentatives d’appel. Cette valeur peut être remplacée par le biais du paramètre de configuration max_attempts.

  • Nouvelles tentatives pour le nombre limité d’erreurs/exceptions suivant :

    • Erreurs générales de socket ou de connexion :

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • Erreurs et exceptions de limitation/limite côté service :

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • Nouvelles tentatives pour plusieurs codes d’état HTTP, notamment 429, 500, 502, 503, 504 et 509.

  • Toute nouvelle tentative inclura un backoff exponentiel d’un facteur de base de 2.

Mode de nouvelle tentative adaptatif

Avertissement

Le mode adaptatif est un mode expérimental susceptible de changer, tant au niveau des fonctionnalités que du comportement.

le mode de nouvelle tentative Adaptive est un mode de nouvelle tentative expérimental qui inclut toutes les fonctionnalités du mode standard. Outre les fonctionnalités du mode standard, le mode adaptatif introduit également une limitation du débit côté client grâce à l’utilisation d’un compartiment de jetons et de variables de limite de débit qui sont mises à jour dynamiquement à chaque nouvelle tentative. Ce mode offre une flexibilité lors des tentatives côté client qui s’adapte à la réponse d’état d’erreur/d’exception d’un service AWS.

À chaque nouvelle tentative, le mode adaptatif modifie les variables de limite de débit en fonction de l’erreur, de l’exception ou du code d’état HTTP présenté dans la réponse du service AWS. Ces variables de limite de débit sont ensuite utilisées pour calculer un nouveau débit d’appels pour le client. Chaque exception/erreur ou réponse HTTP infructueuse (fournie dans la liste ci-dessus) d’un service AWS met à jour les variables de limite de débit au fur et à mesure des nouvelles tentatives jusqu’à ce que le succès soit atteint, que le compartiment de jetons soit épuisé ou que la valeur maximale de tentatives configurée soit atteinte.

Configuration d’un mode de nouvelle tentative

L’AWS CLI inclut diverses configurations de nouvelle tentative ainsi que des méthodes de configuration à prendre en compte lors de la création de votre objet client.

Méthodes de configuration disponibles

Dans l’AWS CLI, les utilisateurs peuvent configurer les nouvelles tentatives de différentes manières :

  • Variables d’environnement

  • Fichier de configuration de l’AWS CLI

Les utilisateurs peuvent personnaliser les options de nouvelle tentative suivantes :

  • Mode de nouvelle tentative - Spécifie le mode de nouvelle tentative utilisé par l’AWS CLI. Comme décrit précédemment, trois modes de nouvelle tentative sont disponibles : hérité, standard et adaptatif. La valeur par défaut pour l’AWS CLI version 1 est le mode hérité.

  • Nombre maximal de tentatives - Indique la valeur du nombre maximal de nouvelles tentatives utilisées par le gestionnaire de nouvelles tentatives AWS CLI, l’appel initial étant pris en compte dans la valeur que vous fournissez. La valeur par défaut dépend de votre mode de nouvelle tentative.

Définition d’une configuration de nouvelle tentative dans vos variables d’environnement

Pour définir votre configuration de nouvelle tentative pour l’AWS CLI, mettez à jour les variables d’environnement de votre système d’exploitation.

Les variables d’environnements de nouvelle tentative sont les suivantes :

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

Pour plus d’informations sur les variables d’environnement, consultez Configuration des variables d’environnement pour l’ AWS CLI.

Affichage des journaux des nouvelles tentatives

L’AWS CLI utilise la méthodologie de nouvelles tentatives et de journalisation de Boto3. Vous pouvez utiliser l’option --debug sur n’importe quelle commande pour recevoir les journaux de débogage. Pour plus d’informations sur l’utilisation de l’option --debug, consultez Options de ligne de commande dans le AWS CLI.

Si vous recherchez « nouvelle tentative » dans vos journaux de débogage, vous trouverez les informations sur les nouvelles tentatives dont vous avez besoin. Les entrées du journal client concernant les nouvelles tentatives dépendent du mode de nouvelle tentative que vous avez activé.

Mode hérité :

Les messages de nouvelle tentative sont générés par botocore.retryhandler. L’un des trois messages suivants s’affiche :

  • No retry needed

  • Retry needed, action of: <action_name>

  • Reached the maximum number of retry attempts: <attempt_number>

Mode standard ou adaptatif :

Les messages de nouvelle tentative sont générés par botocore.retries.standard. L’un des trois messages suivants s’affiche :

  • No retrying request

  • Retry needed, retrying request after delay of: <delay_value>

  • Retry needed but retry quota reached, not retrying request

Pour le fichier de définition complète des nouvelles tentatives de botocore, consultez _retry.json sur le Référentiel GitHub botocore.