

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

# Usar waiters no AWS SDK para Rust
<a name="waiters"></a>

 Os waiters são uma abstração do lado do cliente usados para sondar um recurso da até que o estado desejado seja atingido ou até que seja determinado que o recurso não entrará no estado desejado. Essa é uma tarefa comum quando se trabalha com serviços que acabam sendo consistentes, como o Amazon Simple Storage Service, ou serviços que criam recursos de forma assíncrona, como o Amazon Elastic Compute Cloud. Escrever uma lógica para sondar continuamente o status de um recurso pode ser complicado e propenso a erros. O objetivo dos waiters é transferir essa responsabilidade do código do cliente para o AWS SDK para Rust, que tem conhecimento profundo dos aspectos de cronometragem da operação da AWS. 

Serviços da AWS que fornecem suporte para waiters incluem um módulo `<service>::waiters`. 
+ A característica `<service>::client::Waiters` fornece métodos de waiter ao cliente. Os métodos são implementados para a estrutura do `Client`. Todos os métodos de waiter seguem uma convenção de nomenclatura padrão de `wait_until_<Condition>` 
  + Para o Amazon S3, essa característica é [https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/client/trait.Waiters.html](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/client/trait.Waiters.html). 

O exemplo a seguir usa o Amazon S3. No entanto, os conceitos são os mesmos para qualquer AWS service (Serviço da AWS) que tenha um ou mais waiters definidos. 

O exemplo de código a seguir mostra o uso de uma função de waiter em vez de escrever uma lógica de sondagem para esperar que um bucket exista após ser criado. 

```
use std::time::Duration;
use aws_config::BehaviorVersion;
// Import Waiters trait to get `wait_until_<Condition>` methods on Client.
use aws_sdk_s3::client::Waiters;


let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;
    
let s3 = aws_sdk_s3::Client::new(&config);

// This initiates creating an S3 bucket and potentially returns before the bucket exists.
s3.create_bucket()
    .bucket("my-bucket")
    .send()
    .await?;

// When this function returns, the bucket either exists or an error is propagated.
s3.wait_until_bucket_exists()
    .bucket("my-bucket")
    .wait(Duration::from_secs(5))
    .await?;

// The bucket now exists.
```

**nota**  
 Cada método de espera retorna um `Result<FinalPoll<...>, WaiterError<...>> ` que pode ser usado para obter a resposta final após atingir a condição desejada ou um erro. Consulte [FinalPoll](https://docs.rs/aws-smithy-runtime-api/latest/aws_smithy_runtime_api/client/waiters/struct.FinalPoll.html) e [WaiterError](https://docs.rs/aws-smithy-runtime-api/latest/aws_smithy_runtime_api/client/waiters/error/enum.WaiterError.html) na documentação da API do Rust para obter detalhes.