View a markdown version of this page

Apache 5.x ベースの HTTP クライアントを設定する - AWS SDK for Java 2.x

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

Apache 5.x ベースの HTTP クライアントを設定する

SDK の Apache5HttpClientは Apache HttpClient 5.x に基づいています。

Apache5HttpClient にアクセスする

ほとんどの場合、明示的な設定を行わずに Apache5HttpClient を使用することになります。サービスクライアントを宣言すると、SDK が標準値を使用して Apache5HttpClient を自動的に設定します。

Apache5HttpClient を明示的に設定したり、複数のサービスクライアントで使用したりする場合は、設定できるようにする必要があります。

設定が不要です

Maven でサービスクライアントへの依存関係を宣言すると、SDK は apache5-client アーティファクトにランタイム依存関係を追加します。これにより、コンパイル時ではなく、ランタイム時にその Apache5HttpClient クラスをコードで使用できるようになります。Apache ベースの HTTP クライアントを設定していない場合は、依存関係を指定する必要はありません。

次の Maven pom.xml ファイルの XML スニペットでは、<artifactId>s3</artifactId> で宣言された依存関係によって Apache ベースの HTTP クライアントが自動的に取り込まれます。そのために依存関係を特別に宣言する必要はありません。

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- The s3 dependency automatically adds a runtime dependency on the Apache5HttpClient--> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> </dependencies>

*赤で示されているバージョンを、使用する Java SDK のバージョンに置き換えてください。Maven Central で最新最新バージョンを見つけます。

これらの依存関係では、Apache5HttpClient ライブラリはランタイムのクラスパス上にのみ存在するため、明示的に HTTP 設定を変更することはできません。

設定が必要です

Apache5HttpClient を設定するには、コンパイル時間に apache5-client ライブラリに依存関係を追加する必要があります。

次の Maven pom.xml ファイルの例を参照して、「Apache5HttpClient」を設定します。

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache5-client dependency, Apache5HttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>

*赤で示されているバージョンを、使用する Java SDK のバージョンに置き換えてください。Maven Central で最新最新バージョンを見つけます。

Apache5HttpClient を使用および設定する

サービスクライアントを構築すると同時に Apache5HttpClient のインスタンスを設定することも、単一インスタンスを複数のサービスクライアント間で共有するように設定することもできます。

どちらの方法でも、Apache5HttpClient.Builder を使用して Apache 5 ベースの HTTP クライアントのプロパティを設定します。

ベストプラクティス: Apache5HttpClient インスタンスをサービスクライアントに専念する

Apache5HttpClient のインスタンスを設定する必要がある場合は、専有 Apache5HttpClient インスタンスを構築することをお勧めします。これを行うには、サービスクライアントのビルダーの httpClientBuilder メソッドを使用します。この方法では、HTTP クライアントのライフサイクルが SDK によって管理されるため、不要になったときに Apache5HttpClient インスタンスを閉じなかった場合にメモリリークが発生するのを防ぐことができます。

次の例では、S3Client を作成し、maxConnections と connectionTimeout 値Apache5HttpClientを使用して の埋め込みインスタンスを設定します。HTTP インスタンスは、S3Client.Builder のメソッド httpClientBuilder を使用して作成されます。

インポート

import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(Apache5HttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ) .build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.

別の方法: Apache5HttpClient インスタンスを共有する

アプリケーションのリソースとメモリの使用量を低く抑えるため、Apache5HttpClient を設定して複数のサービスクライアント間で共有できます。HTTP 接続プールは共有されるため、リソースの使用量が少なくなります。

注記

Apache5HttpClient インスタンスを共有する場合、破棄の準備が整った時点でインスタンスを閉じる必要があります。サービスクライアントが閉じられても、SDK はインスタンスを閉じません。

次の例では、2 つのサービスクライアントで使用される Apache ベースの HTTP クライアントを設定します。設定されたApache5HttpClientインスタンスは、各ビルダーの httpClient メソッドに渡されます。サービスクライアントと HTTP クライアントが不要になると、コードによって明示的に閉じられます。HTTP クライアントは最後に閉じられます。

インポート

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;

コード

SdkHttpClient apache5HttpClient = Apache5HttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apache5HttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apache5HttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apache5HttpClient.close(); // Explicitly close apache5HttpClient.