AWS CLI tentar novamente - AWS Command Line Interface

O Python 2.7, 3.4 e 3.5 está sendo defasado para o AWS CLI versão 1. Para obter mais informações, consulte a AWS CLI versão 1 seção de Sobre as AWS CLI versões.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS CLI tentar novamente

Este tópico descreve como o AWS CLI pode ver chamadas para serviços da AWS falhar devido a problemas inesperados. Esses problemas podem ocorrer no lado do servidor ou podem falhar devido à limitação de taxa do serviço do AWS que você está tentando chamar. Esses tipos de falhas geralmente não exigem tratamento especial e a chamada é automaticamente feita novamente, geralmente após um breve período de espera. O AWS CLI fornece muitos recursos para ajudar a repetir chamadas de clientes a serviços da AWS quando esses tipos de erros ou exceções forem enfrentados.

Modos de repetição disponíveis

O AWS CLI tem vários modos para escolher dependendo da sua versão:

Modo de repetição legado

O modo legado é o modo padrão usado pelo AWS CLI versão 1. O modo legado usa um manipulador de novas tentativas mais antigo que tem funcionalidade limitada que inclui:

  • Um valor padrão de 4 para o máximo de tentativas de repetição, fazendo um total de 5 tentativas de chamada. Esse valor pode ser substituído por meio do parâmetro de configuração max_attempts.

  • Tente novamente no seguinte número limitado de erros/exceções:

    • Erros gerais de soquete/conexão:

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • Erros e exceções de limitação/limitação no lado do serviço:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • Houve várias tentativas de repetição de códigos de status HTTP, incluindo 429, 500, 502, 503, 504 e 509.

  • Qualquer tentativa de repetição incluirá um recuo exponencial por um fator base de 2.

Modo de repetição padrão

O modo padrão é um conjunto padrão de regras de novas tentativas em todo o AWS SDKs com mais funcionalidade do que o antigo. Esse modo é o padrão para o AWS CLI versão 2. O modo padrão foi criado para o AWS CLI versão 2 e é enviado para backport para o AWS CLI versão 1. A funcionalidade do modo padrão inclui:

  • Um valor padrão de 2 para o máximo de tentativas de repetição, fazendo um total de 3 tentativas de chamada. Esse valor pode ser substituído por meio do parâmetro de configuração max_attempts.

  • Repetir tentativas para a seguinte lista expandida de erros/exceções:

    • Erros/exceções transitórios

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • Erros e exceções de limitação/limitação no lado do serviço:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • Tentativas de repetição em códigos de erro transitórios não descritivos. Especificamente, estes códigos de status HTTP: 500, 502, 503, 504.

  • Qualquer tentativa de repetição incluirá um recuo exponencial por um fator base de 2 para um tempo de recuo máximo de 20 segundos.

Modo de repetição adaptável

Atenção

O modo adaptável é um modo experimental e está sujeito a alterações em recursos e comportamento.

O modo de repetição adaptável é um modo de repetição experimental que inclui todos os recursos do modo padrão. Além dos recursos do modo padrão, o modo adaptável também apresenta a limitação de taxa no lado do cliente por meio do uso de um bucket de token e variáveis de limite de taxa que são atualizadas dinamicamente com cada tentativa de repetição. esse modo oferece flexibilidade em novas tentativas no lado do cliente que se adapta à resposta do estado de erro/exceção de um serviço da AWS.

Com cada nova tentativa de repetição, o modo adaptável modifica as variáveis de limite de taxa com base no erro, na exceção ou no código de status HTTP apresentado na resposta do serviço AWS. Essas variáveis de limite de taxa são usadas para calcular uma nova taxa de chamada para o cliente. Cada exceção/erro ou resposta HTTP sem êxito (fornecida na lista acima) de um serviço da AWS atualiza as variáveis de limite de taxa conforme ocorrem novas tentativas até que o sucesso seja atingido, o bucket de token seja esgotado ou o valor máximo configurado de tentativas seja atingido.

Configurar um modo de repetição

O AWS CLI inclui uma variedade de configurações de novas tentativas, bem como métodos de configuração a serem considerados ao criar o objeto do cliente.

Métodos de configuração disponíveis

No AWS CLI, os usuários podem configurar novas tentativas das seguintes formas:

  • Variáveis de ambiente

  • AWS CLI arquivo de configuração

Os usuários podem personalizar as seguintes opções de repetição:

  • Modo de repetição – Especifica qual modo de repetição a AWS CLI usa. Conforme descrito anteriormente, há três modos de repetição disponíveis: herdado, padrão e adaptável. O valor padrão para AWS CLI versão 1 é herdado e para AWS CLI versão 2 é padrão.

  • Max attempts - Especifica o valor de tentativas máximas de repetição que o manipulador de repetição do AWS CLI usa, onde a chamada inicial conta para o valor que você fornecer. O valor padrão é 5.

Definir uma configuração de repetição nas variáveis de ambiente

Para definir a configuração de repetição para a AWS CLI, atualize as variáveis de ambiente do sistema operacional.

As variáveis de ambiente de repetição são:

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

Para obter mais informações sobre variáveis de ambiente, consulte Variáveis de ambiente para configurar a AWS CLI.

Definir uma configuração de repetição no arquivo de configuração da AWS

Esse recurso está disponível somente na AWS CLI versão 2.

O recurso a seguir só estará disponível se você usar a AWS CLI versão 2. Ele não estará disponível se você executar a AWS CLI versão 1. Para obter informações sobre como instalar a versão 2, consulte Instalar, atualizar e desinstalar aAWS CLI versão 2.

Para alterar a configuração de repetição, atualize o arquivo de configuração global da AWS. O local padrão para o arquivo de configuração da AWS é ~/.aws/config.

Veja a seguir um exemplo de um arquivo de configuração da AWS:

[default] retry_mode = standard max_attempts = 6

Para obter mais informações sobre arquivos de configuração, consulte Configurações de arquivos de configuração e credenciais.

Visualizar logs de tentativas de repetição

A AWS CLI usa a metodologia de novas tentativas e o registro em log do Boto3. Você pode usar a opção --debug em qualquer comando para receber logs de depuração. Para obter mais informações sobre como usar a opção --debug, consulte Opções de linha de comando.

Se você pesquisar "nova tentativa" em seus logs de depuração, encontrará as informações necessárias. As entradas de log do cliente para tentativas de repetição dependem do modo de repetição habilitado.

Modo legado:

Mensagens de repetição são geradas pelo botocore.retryhandler. Você verá uma das três mensagens:

  • No retry needed

  • Retry needed, action of: <action_name>

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

Modo padrão ou adaptável:

As mensagens de repetição são geradas por botocore.retries.standard. Você verá uma das três mensagens:

  • No retrying request

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

  • Retry needed but retry quota reached, not retrying request

Para obter o arquivo de definição completo de novas tentativas do botocore, consulte _retry.json no repositório botocore do GitHub.