Uso de «waiters» en AWS SDK para Rust - AWS SDK para Rust

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de «waiters» en AWS SDK para Rust

Los «waiters» son una abstracción del cliente que se utilizan para sondear un recurso hasta que se alcance el estado deseado o se determine que el recurso no entrará en el estado deseado. Esta es una tarea común cuando se trabaja con servicios que son eventualmente consistentes, como Amazon Simple Storage Service, o servicios que crean recursos de forma asíncrona, como Amazon Elastic Compute Cloud. Escribir lógica para sondear continuamente el estado de un recurso puede resultar engorroso y aumentar la probabilidad de errores. El objetivo de los «waiters» es trasladar esta responsabilidad del código de cliente al AWS SDK para Rust, que tiene un profundo conocimiento de los aspectos temporales de la operación de AWS.

Servicios de AWS compatibles con los «waiters» incluyen un módulo <service>::waiters.

  • El indicador <service>::client::Waiters proporciona métodos de «waiter» para el cliente. Los métodos se implementan para la estructura Client. Todos los métodos de «waiter» siguen una convención de nomenclatura estándar de wait_until_<Condition>.

En el siguiente ejemplo, se utiliza Amazon S3. Sin embargo, los conceptos son los mismos para todos los Servicio de AWS que tengan uno o más «waiters» definidos.

En el siguiente ejemplo de código se muestra el uso de una función de «waiter» en lugar de escribir una lógica de sondeo para esperar a que exista un cubo después de crearlo.

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 devuelve un Result<FinalPoll<...>, WaiterError<...>> que se puede utilizar para obtener la respuesta final si se alcanza la condición deseada o se produce un error. Consulte FinalPoll y WaiterError en la documentación de la API de Rust para obtener más información.