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
proporciona métodos de «waiter» para el cliente. Los métodos se implementan para la estructura<service>::client::WaitersClient. Todos los métodos de «waiter» siguen una convención de nomenclatura estándar dewait_until_.<Condition>-
En Amazon S3, este indicador es
aws_sdk_s3::client::Waiters.
-
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