기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SDK for Rust에서 Waiter 사용
Waiter는 원하는 상태에 도달할 때까지 또는 리소스가 원하는 상태로 전환되지 않을 것으로 확인될 때까지 리소스를 폴링하는 데 사용되는 클라이언트 측 추상화입니다. 이는 Amazon Simple Storage Service와 같이 최종적으로 일관된 서비스 또는 Amazon Elastic Compute Cloud와 같이 비동기적으로 리소스를 생성하는 서비스로 작업할 때 일반적인 작업입니다. 리소스의 상태를 지속적으로 폴링하는 로직을 작성하는 것은 번거로우며 오류가 발생하기 쉽습니다. waiter의 목표는 이러한 책임을 고객 코드에서 벗어나 AWS 작업의 타이밍 측면에 대한 심층적인 지식을 갖춘 AWS SDK for Rust로 옮기는 것입니다.
waiter에 대한 지원을 제공하는 AWS 서비스에는 모듈이 포함됩니다.<service>::waiters
-
특성은 클라이언트에 대한 waiter 메서드를 제공합니다. 메서드는<service>::client::WaitersClient구조체에 대해 구현됩니다. 모든 waiter 메서드는wait_until_의 표준 명명 규칙을 따릅니다.<Condition>-
Amazon S3의 경우 이 특성은
aws_sdk_s3::client::Waiters입니다.
-
다음 예제에서는 Amazon S3를 사용합니다. 그러나 개념은 하나 이상의 waiter가 정의된 모든 AWS 서비스에 대해 동일합니다.
다음 코드 예제에서는 생성 후 버킷이 존재할 때까지 대기하는 폴링 로직을 작성하는 대신 waiter 함수를 사용하는 방법을 보여줍니다.
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.
참고
각 대기 메서드는 원하는 조건 또는 오류에 도달하여 최종 응답을 얻는 데 사용할 수 있는 Result<FinalPoll<...>, WaiterError<...>> 를 반환합니다. 자세한 내용은 Rust API 설명서의 FinalPoll