翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ウェーターは、目的の状態に達するまで、またはリソースが目的の状態に移行しないと判断されるまで、リソースをポーリングするために使用されるクライアント側の抽象化です。これは、Amazon Simple Storage Service などの結果整合性のあるサービスや、Amazon Elastic Compute Cloud などのリソースを非同期的に作成するサービスを使用する場合の一般的なタスクです。リソースのステータスを継続的にポーリングするロジックを記述すると、面倒でエラーが発生しやすくなります。ウェーターの目標は、この責任をカスタマーコードから に移行することです。この は AWS SDK for Rust、 AWS オペレーションのタイミングの側面について深い知識を持っています。
AWS のサービス ウェイターのサポートを提供する には、
モジュールが含まれます。<service>
::waiters
-
特性は、クライアントのウェーターメソッドを提供します。メソッドは<service>
::client::WaitersClient
構造体に実装されます。すべてのウェーターメソッドは、 の標準の命名規則に従います。wait_until_
<Condition>
-
Amazon S3 の場合、この特性は です
aws_sdk_s3::client::Waiters
。
-
次の例では、Amazon S3 を使用しています。ただし、概念は、1 つ以上のウェーター AWS のサービス が定義されている でも同じです。
次のコード例は、作成後にバケットが存在するのを待つポーリングロジックを記述する代わりに、ウェーター関数を使用する方法を示しています。
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