Usar waiters no AWS SDK para Rust - AWS SDK para Rust

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

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 e WaiterError na documentação da API do Rust para obter detalhes.