7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2021

Day 16

AWS SDK for Javaのバージョンごとのクライアントの設定

Last updated at Posted at 2021-12-15

ZOZO Advent Calendar 2021 の16日目の記事です。

AWS SDK for Java

AWS SDK for JavaにはAWSのサービスを利用するためのJava APIが用意されています。

その中で接続タイムアウトやリクエスト再試行などのクライアントの設定を変更することができます。
AWS SDK for Javaには、バージョン1(v1)とバージョン2(v2)があり、アップデートする際に使用するそれぞれのバージョンの主なクラスとメソッドの対応をまとめました。

v1、v2オプション対応表

以下のようにメソッドチェーンを使用して設定することを想定しています。

new ClientConfiguration()
    .withConnectionTimeout(connectionTimeout)
    .withClientExecutionTimeout(clientExecutionTimeout)
    .withRequestTimeout(requestTimeout)
    .withSocketTimeout(socketTimeout)
    .withMaxConnections(maxConnections)
    .withMaxErrorRetry(maxErrorRetries);
設定内容 v1 クラス v1 メソッド - v2 クラス v2 メソッド
接続タイムアウトまでの時間 ClientConfiguration withConnectionTimeout ApacheHttpClient connectionTimeout
クライアントがAPI呼び出しの実行を完了するのにかかる時間 ClientConfiguration withClientExecutionTimeout ClientOverrideConfiguration apiCallTimeout
リクエストをタイムアウトするまでの時間 ClientConfiguration withRequestTimeout ClientOverrideConfiguration apiCallAttemptTimeout
ソケット通信をタイムアウトするまでの時間 ClientConfiguration withSocketTimeout ApacheHttpClient socketTimeout
HTTP接続の最大数 ClientConfiguration withMaxConnections ApacheHttpClient maxConnections
最大リトライ数 ClientConfiguration withMaxErrorRetry ClientOverrideConfiguration retryPolicy

注意点

v1からv2にアップデートするにあたり、以下の注意点があります。

  • v1の引数は、プリミティブ型であるのに対し、v2の引数は参照型に変更されています。
  • v1ではClientConfigurationクラスにほとんどの設定できましたが、v2ではサービスクライアントの中で以下のように設定する必要があります。

以下はDynamoDBClientを使用した場合の例です。

 DynamoDbClient.builder()
  .overrideConfiguration(ClientOverrideConfiguration.builder()
    .apiCallTimeout(Duration.ofMillis(clientExecutionTimeout))
    .apiCallAttemptTimeout(Duration.ofMillis(requestTimeout))
    .retryPolicy(
          RetryPolicy.builder().numRetries(maxErrorRetries).build())
    .build())
  .httpClient(ApacheHttpClient.builder()
    .connectionTimeout(Duration.ofMillis(connectionTimeout))
    .socketTimeout(Duration.ofMillis(socketTimeout))
    .maxConnections(maxConnections)
    .build())
  .build();

まとめ

AWS SDKのv1とv2のそれぞれでクライアントの設定は公式ドキュメントでもまとめられていますが、バージョンアップ時のそれぞれの対応表がなく困ったので、まとめました。AWS SDK v2へのバージョンアップへのきっかけになれば幸いです。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?