AWS CLI réessaie dans le AWS CLI - AWS Command Line Interface

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.

AWS CLI réessaie dans le AWS CLI

Cette rubrique décrit comment les appels aux AWS services AWS CLI peuvent échouer en raison de problèmes inattendus. Ces problèmes peuvent se produire côté serveur ou échouer en raison de la limitation du débit du AWS service 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 refait, souvent après une brève période d'attente. AWS CLI Il fournit de nombreuses fonctionnalités pour aider les clients à réessayer d'appeler les AWS services en cas d'erreurs ou d'exceptions de ce type.

Modes de nouvelle tentative disponibles

Vous AWS CLI avez le choix entre plusieurs modes en fonction de votre version :

Mode de nouvelle tentative classique

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

  • La valeur par défaut est de 4 pour le nombre maximum de tentatives, soit un total de 5 tentatives d'appel. Cette valeur peut être remplacée via le paramètre de max_attempts configuration.

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

  • Réessayez pour le nombre limité d'erreurs/exceptions suivant :

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

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • Erreurs et exceptions liées à la régulation ou aux limites côté service :

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • Réessayez d'utiliser plusieurs codes d'HTTPétat, notamment 429, 500, 502, 503, 504 et 509.

  • Toute nouvelle tentative comportera un recul exponentiel d'un facteur de base de 2.

Mode de nouvelle tentative standard

Le mode standard est un ensemble standard de règles de nouvelle tentative AWS SDKs offrant plus de fonctionnalités que l'ancien mode. Ce mode est le mode par défaut pour AWS CLI la version 2. Le mode standard a été créé pour la AWS CLI version 2 et est rétroporté vers la AWS CLI version 1. Les fonctionnalités du mode standard incluent :

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

  • Réessayez pour la liste étendue d'erreurs/exceptions suivante :

    • Erreurs/exceptions transitoires

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • Erreurs et exceptions liées à la régulation ou aux limites côté service :

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • Réessayez de corriger les codes d'erreur transitoires et non descriptifs. Plus précisément, ces codes d'HTTPétat : 500, 502, 503, 504.

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

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 tentative adaptatif 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 bucket 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 du code d'erreur, d'exception ou d'HTTPétat 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 HTTP réponse d'exception/erreur ou d'échec (fournie dans la liste ci-dessus) d'un AWS service 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 bucket de jetons soit épuisé ou que la valeur maximale de tentatives configurée soit atteinte.

Configuration d'un mode de nouvelle tentative

AWS CLI Cela inclut une variété de 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 le AWS CLI, les utilisateurs peuvent configurer les nouvelles tentatives de la manière suivante :

  • Variables d’environnement

  • AWS CLI fichier de configuration

Les utilisateurs peuvent personnaliser les options de nouvelle tentative suivantes :

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

  • Nombre maximal de tentatives - Spécifie la valeur maximale de tentatives utilisées par le gestionnaire de AWS CLI nouvelles tentatives, l'appel initial étant pris en compte dans la valeur que vous fournissez. La valeur par défaut est 5.

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

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

Les variables d'environnement de nouvelle tentative sont les suivantes :

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

Pour plus d'informations sur les variables d'environnement, consultezConfiguration des variables d'environnement pour AWS CLI.

Définition d'une configuration de nouvelle tentative dans votre fichier AWS de configuration

Pour modifier votre configuration de nouvelle tentative, mettez à jour votre fichier AWS de configuration global. L'emplacement par défaut de votre fichier de configuration est AWS ~/.aws/config.

Voici un exemple de fichier de AWS configuration :

[default] retry_mode = standard max_attempts = 6

Pour plus d'informations sur les fichiers de configuration, consultezParamètres des fichiers de configuration et d'identification dans le AWS CLI.

Afficher les journaux des tentatives de nouvelle tentative

Il AWS CLI utilise la méthodologie de réessai et la journalisation de Boto3. Vous pouvez utiliser --debug cette option sur n'importe quelle commande pour recevoir les journaux de débogage. Pour plus d'informations sur l'utilisation de --debug cette option, consultezOptions de ligne de commande dans AWS CLI.

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

Mode Héritage :

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

  • 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'affichera :

  • 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 retentatives de botocore, consultez _retry.json dans le référentiel botocore. GitHub