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
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
fornece métodos de waiter ao cliente. Os métodos são implementados para a estrutura do<service>::client::WaitersClient. Todos os métodos de waiter seguem uma convenção de nomenclatura padrão dewait_until_<Condition>-
Para o Amazon S3, essa característica é
aws_sdk_s3::client::Waiters.
-
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