AWS SDK for Java 2.x: ウェーターのリソース状態のポーリング - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for Java 2.x: ウェーターのリソース状態のポーリング

AWS SDK for Java 2.x のウェイターユーティリティを使用すると、 AWS リソースに対してオペレーションを実行する前に、リソースが指定された状態であることを検証できます。

ウェーターは、 DynamoDB テーブルや Amazon S3 バケットなどの AWS リソースが目的の状態に達するまで (またはリソースが目的の状態に到達しないと判断されるまで)、リソースをポーリングするために使用される抽象化です。面倒でエラーが発生しやすい AWS リソースを継続的にポーリングするロジックを記述する代わりに、ウェイターを使用してリソースをポーリングし、リソースの準備ができた後もコードを実行し続けることができます。

前提条件

でプロジェクトでウェイターを使用する前に AWS SDK for Java、「 AWS SDK for Java 2.x のセットアップ」の手順を完了する必要があります。

AWS SDK for Javaのバージョン 2.15.0 以降を使用するように、プロジェクトの依存関係を (例: pom.xml または build.gradle ファイルで) 設定する必要もあります。

例:

<project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.15.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>

ウェーターの使用

ウェイターオブジェクトをインスタンス化するには、最初にサービスクライアントを作成します。サービスクライアントの waiter() メソッドをウェイターオブジェクトの値として設定します。ウェイターインスタンスが存在するようになったら、適切なコードを実行するようにその応答オプションを設定します。

同期プログラミング

次のコードスニペットは、 DynamoDB テーブルが存在し、 ACTIVE状態になるまで待機する方法を示しています。

DynamoDbClient dynamo = DynamoDbClient.create(); DynamoDbWaiter waiter = dynamo.waiter(); WaiterResponse<DescribeTableResponse> waiterResponse = waiter.waitUntilTableExists(r -> r.tableName("myTable")); // print out the matched response with a tableStatus of ACTIVE waiterResponse.matched().response().ifPresent(System.out::println);

非同期プログラミング

次のコードスニペットは、 DynamoDB テーブルが存在しなくなるのを待つ方法を示しています。

DynamoDbAsyncClient asyncDynamo = DynamoDbAsyncClient.create(); DynamoDbAsyncWaiter asyncWaiter = asyncDynamo.waiter(); CompletableFuture<WaiterResponse<DescribeTableResponse>> waiterResponse = asyncWaiter.waitUntilTableNotExists(r -> r.tableName("myTable")); waiterResponse.whenComplete((r, t) -> { if (t == null) { // print out the matched ResourceNotFoundException r.matched().exception().ifPresent(System.out::println); } }).join();

ウェイターを設定する

ビルダーで overrideConfiguration() を使用して、ウェイターの設定をカスタマイズできます。一部の操作では、リクエストを実行する際にカスタム設定を適用できます。

ウェーターを設定する

次のコードスニペットは、ウェイターの設定を上書きする方法を示しています。

// sync DynamoDbWaiter waiter = DynamoDbWaiter.builder() .overrideConfiguration(b -> b.maxAttempts(10)) .client(dynamoDbClient) .build(); // async DynamoDbAsyncWaiter asyncWaiter = DynamoDbAsyncWaiter.builder() .client(dynamoDbAsyncClient) .overrideConfiguration(o -> o.backoffStrategy( FixedDelayBackoffStrategy.create(Duration.ofSeconds(2)))) .scheduledExecutorService(Executors.newScheduledThreadPool(3)) .build();

特定のリクエストの設定をオーバーライドする

次のコードスニペットは、リクエストごとにウェイターの設定を上書きする方法を示しています。すべての操作でカスタマイズ可能な設定があるわけではないことに注意してください。

waiter.waitUntilTableNotExists(b -> b.tableName("myTable"), o -> o.maxAttempts(10)); asyncWaiter.waitUntilTableExists(b -> b.tableName("myTable"), o -> o.waitTimeout(Duration.ofMinutes(1)));

コードの例

でウェーターを使用する完全な例については DynamoDB、 AWS 「コード例リポジトリ」の「.CreateTablejava」を参照してください。

でウェーターを使用する完全な例については Amazon S3、 AWS 「コード例リポジトリ」のS3BucketOps.java」を参照してください。