

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

# Apache 5.x ベースの HTTP クライアントを設定する
<a name="http-configuration-apache5"></a>

## Apache5HttpClient にアクセスする
<a name="http-apache-5-dependency"></a>

を使用するには、 に依存関係を追加**apache5-client**し、サービスクライアント`Apache5HttpClient`で明示的に を設定`Apache5HttpClient`する必要があります。

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.41.0*</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>apache5-client</artifactId>
    </dependency>
</dependencies>
```

\$1赤で示されているバージョンを、使用する Java SDK のバージョンに置き換えてください。[Maven Central ](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) で最新最新バージョンを見つけます。

### `Apache5HttpClient` を使用および設定する
<a name="http-config-apache-5-config"></a>

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

どちらの方法でも、[Apache5HttpClient.Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html) を使用して Apache 5 ベースの HTTP クライアントのプロパティを設定します。

#### ベストプラクティス: Apache5HttpClient インスタンスをサービスクライアント専用にする
<a name="http-apache5-dedicated-instance"></a>

`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` インスタンスを共有する
<a name="http-apache5-shared-instance"></a>

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

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

次の例では、2 つのサービスクライアントで使用される Apache ベースの HTTP クライアントを設定します。設定された`ApacheHttpClient`インスタンスは、各ビルダーの 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.
```