Reintentos de AWS CLI - AWS Command Line Interface

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Reintentos de AWS CLI

En este tema se describe cómo AWS CLI podría ver las llamadas a servicios de AWS que fallan debido a problemas inesperados. Estos problemas pueden ocurrir en el lado del servidor o puede fallar debido a la limitación de velocidad del servicio de AWS al que está intentando llamar. Este tipo de errores generalmente no requieren un manejo especial y la llamada se realiza de nuevo automáticamente, a menudo después de un breve período de espera. La AWS CLI proporciona muchas características para ayudar a reintentar llamadas de cliente a AWS cuando se experimentan este tipo de errores o excepciones.

Modos de reintento disponibles

La AWS CLI tiene varios modos para elegir según su versión:

Modo de reintento heredado

El modo heredado utiliza un controlador de reintentos más antiguo con una funcionalidad limitada que incluye:

  • Un valor predeterminado de 4 reintentos máximo, lo que hace un total de 5 intentos de llamada. Este valor se puede sobrescribir a través del parámetro de configuración de max_attempts.

  • DynamoDB tiene un valor predeterminado de 9 reintentos como máximo, lo que hace un total de 10 intentos de llamada. Este valor se puede sobrescribir a través del parámetro de configuración de max_attempts.

  • Reintentos para el siguiente limite de errores y excepciones:

    • Errores generales de toma o conexión:

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • Errores y excepciones de límites y de la limitación controlada del lado del servicio:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • Reintentos de varios códigos de estado HTTP, incluidos 429, 500, 502, 503, 504 y 509.

  • Cualquier reintento incluirá un retroceso exponencial por un factor base de 2.

Modo de reintento estándar

El modo estándar es un conjunto estándar de reglas de reintento en los SDK de AWS con más funcionalidad que herencia. Este modo es el predeterminado para la versión 2 de AWS CLI. El modo estándar se creó para la versión 2 de la AWS CLI y se adaptó para la versión 1 de la AWS CLI. La funcionalidad del modo estándar incluye:

  • Un valor predeterminado de 2 para los intentos máximos de reintento, haciendo un total de 3 intentos de llamada. Este valor se puede sobrescribir a través del parámetro de configuración de max_attempts.

  • Reintentos para la siguiente lista ampliada de errores y excepciones:

    • Errores y excepciones transitorios

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • Errores y excepciones de límites y de la limitación controlada del lado del servicio:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • Reintentos de códigos de error transitorios y no descriptivos. En concreto, estos códigos de estado HTTP: 500, 502, 503, 504.

  • Cualquier reintento incluirá un retroceso exponencial por un factor base de 2 para un tiempo máximo de retroceso de 20 segundos.

Modo de reintento flexible

aviso

El modo flexible es un modo experimental y está sujeto a cambios, tanto en las características como en el comportamiento.

El modo de reintento flexible es un modo de reintento experimental que incluye todas las características del modo estándar. Además de las características del modo estándar, el modo flexible también presenta la limitación de la velocidad del lado del cliente mediante el uso del algoritmo token bucket y variables de límite de velocidad que se actualizan en forma dinámica con cada reintento. Este modo ofrece flexibilidad en los reintentos del lado del cliente que se adapta a la respuesta de estado del error y la excepción desde un servicio de AWS.

Con cada nuevo reintento, el modo flexible modifica las variables de límite de velocidad en función del error, la excepción o el código de estado HTTP presentado en la respuesta del servicio de AWS. Estas variables de límite de velocidad se utilizan para calcular una nueva tasa de llamada para el cliente. Cada excepción/error o respuesta HTTP no exitosa (proporcionada en la lista anterior) de un servicio de AWS actualiza las variables de límite de velocidad a medida que se producen reintentos hasta que se alcanza el éxito, se agota el token bucket o se alcanza el valor máximo de intentos configurado.

Configuración de un modo de reintento

La AWS CLI incluye una variedad de configuraciones de reintento, así como métodos de configuración que se deben tener en cuenta al crear el objeto cliente.

Métodos de configuración disponibles

En la AWS CLI, los usuarios pueden configurar reintentos de las siguientes maneras:

  • Variables de entorno

  • Archivo de configuración de la AWS CLI

Los usuarios pueden personalizar las siguientes opciones de reintento:

  • Modo de reintento: especifica qué modo de reintento utiliza la AWS CLI. Como se ha comentado anteriormente, hay tres modos de reintento disponibles: heredado, estándar y adaptativo. El valor predeterminado de la AWS CLIla versión 2 de es estándar.

  • Cantidad máxima de intentos: especifica el valor máximo de reintentos que utiliza el controlador de reintentos de AWS CLI, donde la llamada inicial cuenta para el valor que usted proporciona. El valor predeterminado es 5.

Definición de una configuración de reintento en las variables de entorno

Para definir la configuración de reintento para la AWS CLI, actualice las variables de entorno de su sistema operativo.

Las variables de entorno de reintento son:

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

Para obtener más información sobre las variables de entorno, consulte Variables de entorno para configurar el AWS CLI.

Definición de una configuración de reintento en un archivo de configuración de AWS

Para cambiar la configuración de reintento, actualice su archivo de configuración global de la AWS. La ubicación predeterminada del archivo de configuración de la AWS es ~/.aws/config.

El siguiente es un ejemplo de un archivo de configuración de la AWS:

[default] retry_mode = standard max_attempts = 6

Para obtener más información sobre cómo usar archivos de configuración, consulte Opciones de los archivos de configuración y credenciales.

Visualización de registros de reintentos

La AWS CLI utiliza la metodología de reintento y el registro de Boto3. Puede utilizar la opción --debug en cualquier comando para recibir registros de depuración. Para obtener información sobre cómo utilizar la opción --debug, consulte Opciones de línea de comandos.

Si busca “reintento” en sus registros de depuración, encontrará la información sobre de reintentos que necesita. Las entradas del registro del cliente correspondientes a los reintentos dependen del modo de reintento habilitado.

Modo heredado:

Los mensajes de reintento se generan mediante botocore.retryhandler. Verá uno de los tres mensajes:

  • No retry needed

  • Retry needed, action of: <action_name>

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

Modo estándar o flexible:

Los mensajes de reintento se generan a través de botocore.retries.standard. Verá uno de los tres mensajes:

  • No retrying request

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

  • Retry needed but retry quota reached, not retrying request

Para obtener el archivo completo de definición de los reintentos de botocore, consulte _retry.json en el Repositorio GitHub de botocore.