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.
Los camareros son una abstracción del lado del cliente que se utiliza para sondear un recurso hasta que se alcance el estado deseado o hasta que se determine que el recurso no entrará en el estado deseado. Esta es una tarea habitual cuando se trabaja con servicios que finalmente son coherentes, como Amazon Simple Storage Service, o servicios que crean recursos de forma asíncrona, como Amazon Elastic Compute Cloud. Escribir la lógica para sondear continuamente el estado de un recurso puede resultar engorroso y propenso a errores. El objetivo de los camareros es sacar esta responsabilidad del código de cliente y llevarla a una empresa que tenga un conocimiento profundo de los AWS SDK para Rust aspectos relacionados con el tiempo de la operación. AWS
Servicios de AWS que brindan apoyo a los camareros incluyen un
módulo. <service>
::waiters
-
El
rasgo proporciona métodos de camarero para el cliente. Los métodos están implementados para la<service>
::client::WaitersClient
estructura. Todos los métodos de camarero siguen una convención de nomenclatura estándar dewait_until_
<Condition>
-
Para Amazon S3, esta característica 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 camareros definidos.
En el siguiente ejemplo de código se muestra el uso de una función de camarero 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 valor 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