Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Comportamento de repetição - AWS SDKs e ferramentas

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á.

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á.

Comportamento de repetição

nota

Para obter ajuda na compreensão do layout das páginas de configurações ou na interpretação da tabela Support by AWS SDKs and tools a seguir, consulteEntendendo as páginas de configurações deste guia.

O comportamento de repetição inclui configurações sobre como a SDKs tentativa de se recuperar de falhas resultantes de solicitações feitas a. Serviços da AWS

Configure essa funcionalidade usando o seguinte:

retry_mode- configuração de AWS config arquivo compartilhado
AWS_RETRY_MODE: variável de ambiente
aws.retryMode- Propriedade do sistema JVM: somente Java/Kotlin

Especifica como o SDK ou a ferramenta de desenvolvedor tenta novas tentativas.

Valor padrão: esse valor é específico para seu SDK. Consulte seu guia específico do SDK ou a base de código do seu SDK para ver o padrão. retry_mode

Valores válidos:

  • standard— (Recomendado) O conjunto recomendado de regras de repetição. AWS SDKs Esse modo inclui um conjunto padrão de erros que são repetidos e ajusta automaticamente o número de novas tentativas para maximizar a disponibilidade e a estabilidade. Esse modo é seguro para uso em aplicativos multilocatários. O número máximo padrão de tentativas com esse modo é três, a menos que max_attempts esteja explicitamente configurado.

  • adaptive— Um modo de repetição, apropriado somente para casos de uso especializados, que inclui a funcionalidade do modo padrão, bem como a limitação automática de taxa do lado do cliente. Esse modo de repetição não é recomendado para aplicativos multilocatários, a menos que você tenha o cuidado de isolar os inquilinos do aplicativo. Consulte Escolher entre os standard modos e adaptive tentar novamente para obter mais informações. Esse modo é experimental e pode mudar o comportamento no futuro.

  • legacy— (Não recomendado) Específico para seu SDK (verifique seu guia específico do SDK ou a base de código do seu SDK).

max_attempts- configuração de AWS config arquivo compartilhado
AWS_MAX_ATTEMPTS: variável de ambiente
aws.maxAttempts- Propriedade do sistema JVM: somente Java/Kotlin

Especifica o número máximo de tentativas a serem feitas em uma solicitação.

Valor padrão: se esse valor não for especificado, seu padrão dependerá do valor da configuração retry_mode:

  • Se retry_mode for legacy: usa um valor padrão específico para seu SDK (consulte o guia de seu SDK específico ou a base de código do seu SDK para ver o max_attempts padrão).

  • Se retry_mode for standard: faz três tentativas.

  • Se retry_mode for adaptive: faz três tentativas.

Valores válidos: número maior que zero.

Escolher entre os standard modos e adaptive tentar novamente

Recomendamos que você use o modo de standard repetição, a menos que tenha certeza de que seu uso é mais adequadoadaptive.

nota

O adaptive modo pressupõe que você esteja agrupando clientes com base no escopo no qual o serviço de back-end pode limitar as solicitações. Se você não fizer isso, as limitações em um recurso podem atrasar as solicitações de um recurso não relacionado se você estiver usando o mesmo cliente para os dois recursos.

Padrão Adaptável
Casos de uso de aplicativos: todos. Casos de uso de aplicativos:
  1. Não é sensível à latência.

  2. O cliente acessa apenas um único recurso, ou você está fornecendo lógica para agrupar seus clientes separadamente pelo recurso de serviço que está sendo acessado.

Suporta interrupção de circuito para evitar que o SDK tente novamente durante interrupções. Suporta interrupção de circuito para evitar que o SDK tente novamente durante interrupções.
Usa um recuo exponencial instável em caso de falhas. Usa durações dinâmicas de recuo para tentar minimizar o número de solicitações com falha, em troca do potencial de maior latência.
Nunca atrasa a primeira tentativa de solicitação, somente as novas tentativas. Pode acelerar ou atrasar a tentativa de solicitação inicial.

Se você optar por usar o adaptive modo, seu aplicativo deverá criar clientes projetados com base em cada recurso que possa ser limitado. Um recurso, nesse caso, é mais refinado do que apenas pensar em cada um. AWS service (Serviço da AWS) Serviços da AWS podem ter dimensões adicionais que eles usam para acelerar as solicitações. Vamos usar o serviço Amazon DynamoDB como exemplo. O DynamoDB Região da AWS usa mais a tabela que está sendo acessada para acelerar as solicitações. Isso significa que uma tabela que seu código está acessando pode ser mais limitada do que outras. Se seu código usou o mesmo cliente para acessar todas as tabelas e as solicitações para uma dessas tabelas forem limitadas, o modo de repetição adaptável reduzirá a taxa de solicitação de todas as tabelas. Seu código deve ser projetado para ter um cliente por Region-and-table par. Se você tiver uma latência inesperada ao usar o adaptive modo, consulte o guia de AWS documentação específico do serviço que você está usando.

Detalhes da implementação do modo de repetição

Eles AWS SDKs usam repositórios de tokens para decidir se uma solicitação deve ser repetida e (no caso do modo de adaptive repetição) com que rapidez as solicitações devem ser enviadas. Dois repositórios de tokens são usados pelo SDK: um repositório de tokens de nova tentativa e um repositório de tokens de taxa de solicitação.

  • O repositório de tokens de repetição é usado para determinar se o SDK deve desativar temporariamente as novas tentativas para proteger os serviços upstream e downstream durante interrupções. Os tokens são adquiridos do bucket antes da tentativa de novas tentativas, e os tokens são devolvidos ao bucket quando as solicitações são bem-sucedidas. Se o bucket estiver vazio quando uma nova tentativa for tentada, o SDK não repetirá a solicitação.

  • O repositório de tokens da taxa de solicitação é usado somente no modo de nova adaptive tentativa para determinar a taxa na qual enviar solicitações. Os tokens são adquiridos do bucket antes do envio de uma solicitação, e os tokens são devolvidos ao bucket a uma taxa determinada dinamicamente com base nas respostas de limitação retornadas pelo serviço.

A seguir está o pseudocódigo de alto nível para os modos de repetição de repetição standard e adaptive:

MakeSDKRequest() { attempts = 0 loop { GetSendToken() response = SendHTTPRequest() RequestBookkeeping(response) if not Retryable(response) return response attempts += 1 if attempts >= MAX_ATTEMPTS: return response if not HasRetryQuota(response) return response delay = ExponentialBackoff(attempts) sleep(delay) } }

A seguir estão mais detalhes sobre os componentes usados no pseudocódigo:

GetSendToken:

Essa etapa é usada somente no modo de adaptive repetição. Essa etapa adquire um token do repositório de tokens da taxa de solicitação. Se um token não estiver disponível, ele aguardará até que um fique disponível. Seu SDK pode ter opções de configuração disponíveis para falhar na solicitação em vez de esperar. Os tokens no bucket são recarregados a uma taxa determinada dinamicamente, com base no número de respostas de limitação recebidas pelo cliente.

SendHTTPRequest:

Essa etapa envia a solicitação para AWS o. A maioria AWS SDKs usa uma biblioteca HTTP que usa grupos de conexões para reutilizar uma conexão existente ao fazer uma solicitação HTTP. Geralmente, as conexões são reutilizadas se uma solicitação falhar devido a erros de limitação, mas não se uma solicitação falhar devido a um erro transitório.

RequestBookkeeping:

Os tokens são adicionados ao token bucket se a solicitação for bem-sucedida. Somente para o modo de adaptive repetição, a taxa de preenchimento do bucket de tokens da taxa de solicitação é atualizada com base no tipo de resposta recebida.

Retryable:

Essa etapa determina se uma resposta pode ser repetida com base no seguinte:

  • Código de status do HTTP.

  • O código de erro retornado do serviço.

  • Erros de conexão, definidos como qualquer erro recebido pelo SDK no qual uma resposta HTTP do serviço não é recebida.

Erros transitórios (códigos de status HTTP 400, 408, 500, 502, 503 e 504) e erros de controle de utilização (códigos de status HTTP 400, 403, 429, 502, 503 e 509) podem potencialmente ser repetidos. O comportamento de repetição do SDK é determinado em combinação com códigos de erro ou outros dados do serviço.

MAX_ATTEMPTS:

O número padrão de tentativas máximas é definido pela retry_mode configuração, a menos que seja substituído pela max_attempts configuração.

HasRetryQuota

Essa etapa adquire um token do repositório de tokens de repetição. Se o repositório de tokens de nova tentativa estiver vazio, a solicitação não será repetida.

ExponentialBackoff

Para um erro que pode ser repetido, o atraso da nova tentativa é calculado usando o recuo exponencial truncado. O SDKs uso de recuo exponencial binário truncado com instabilidade. O algoritmo a seguir mostra como a quantidade de tempo de sono, em segundos, é definida para uma resposta à solicitação i:

seconds_to_sleep_i = min(b*r^i, MAX_BACKOFF)

No algoritmo anterior, os seguintes valores se aplicam:

b = random number within the range of: 0 <= b <= 1

r = 2

MAX_BACKOFF = 20 secondspara a maioria SDKs. Consulte o guia específico do SDK ou o código-fonte para confirmação.

Support by AWS SDKs and tools

Os itens a seguir SDKs oferecem suporte aos recursos e configurações descritos neste tópico. Quaisquer exceções parciais estão anotadas. Todas as configurações de propriedade do sistema JVM são suportadas pelo AWS SDK for Java e pelo AWS SDK para Kotlin único.

SDK Compatível Notas ou mais informações
AWS CLI v2 Sim
SDK para C++ Sim
SDK para Go V2 (1.x) Sim
SDK para Go 1.x (V1) Não
SDK para Java 2.x Sim
SDK para Java 1.x Sim Propriedades do sistema JVM: use com.amazonaws.sdk.maxAttempts em vez deaws.maxAttempts; use em com.amazonaws.sdk.retryMode vez de. aws.retryMode
SDK para 3.x JavaScript Sim
SDK para 2.x JavaScript Não Suporta um número máximo de novas tentativas, recuo exponencial com instabilidade e a opção de um método personalizado para recuar novamente.
SDK para Kotlin Sim
SDK para .NET 3.x Sim
SDK para PHP 3.x Sim
SDK para Python (Boto3) Sim
SDK para Ruby 3.x Sim
SDK para Rust Sim
SDK para Swift Sim
Ferramentas para PowerShell Sim
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.