

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

# HTTP クライアント設定
<a name="http-client-config"></a>

デフォルトでは、 は [OkHttp](https://square.github.io/okhttp) に基づく HTTP クライアント AWS SDK for Kotlin を使用します。明示的に設定されたクライアントを指定することで、HTTP クライアントとその設定を上書きできます。

**警告**  
使用する HTTP エンジンに関係なく、プロジェクト内の他の依存関係には、SDK に必要な特定のエンジンバージョンと競合する推移的な依存関係がある可能性があります。特に、Spring Boot などのフレームワークは、OkHttp などの依存関係を管理し、SDK よりも古いバージョンに依存することが知られています。詳細については[依存関係の競合を解決するにはどうすればよいですか?](ts-faq-dep-conflict-resolution.md)、「」を参照してください。

**注記**  
デフォルトでは、各サービスクライアントは HTTP クライアントの独自のコピーを使用します。アプリケーションで複数のサービスを使用する場合は、単一の HTTP クライアントを構築し、すべてのサービスクライアントで共有できます。

## 基本的な設定
<a name="basic-http-confg"></a>

サービスクライアントを設定するときに、デフォルトのエンジンタイプを設定できます。SDK は結果の HTTP クライアントエンジンを管理し、不要になったら自動的に閉じます。

次の例は、DynamoDB クライアントの初期化中の HTTP クライアントの設定を示しています。

### インポート
<a name="basic-config-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import kotlin.time.Duration.Companion.seconds
```

### コード
<a name="basic-config-ex-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient {
        maxConcurrency = 64u
        connectTimeout = 10.seconds
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

## 詳細設定
<a name="advanced-http-config"></a>

デフォルトの HTTP 設定は、ほとんどのユースケースに適しています。高スループット環境など、一部の高度なユースケースでは、以下の高度な設定オプションによって追加の機能が提供されます。

### HTTP エンジンタイプの指定
<a name="http-config-engine"></a>

デフォルト以外の HTTP エンジンタイプを指定するか、特定の HTTP エンジンタイプに固有の設定をカスタマイズするには、エンジンタイプ`httpClient`を指定する追加のパラメータを に渡すことができます。

次の例では[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html)、 [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html)プロパティの設定に使用できる を指定します。

#### インポート
<a name="http-config-specify-engine-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
```

#### コード
<a name="http-config-specify-engine-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient(OkHttpEngine) {  // The first parameter specifies the HTTP engine type.
        // The following parameter is generic HTTP configuration available in any engine type.
        maxConcurrency = 64u

            // The following parameter is OkHttp-specific configuration.
        maxConcurrencyPerHost = 32u
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

エンジンタイプに使用できる値は、`OkHttpEngine`、[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html)、および です[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html)。

HTTP エンジンに固有の設定パラメータを使用するには、コンパイル時の依存関係としてエンジンを追加する必要があります。には`OkHttpEngine`、Gradle を使用して次の依存関係を追加します。

({{X.Y.Z}} リンクに移動して、利用可能な最新バージョンを確認できます）。

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-okhttp")
```

には`CrtHttpEngine`、次の依存関係を追加します。

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-crt")
```

#### `OkHttp4Engine` の使用
<a name="http-config-okhttp4engine"></a>

デフォルトの `OkHttp4Engine`を使用できない場合は、 を使用します`OkHttpEngine`。[smithy-kotlin GitHub リポジトリ](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4)には、 の設定方法と使用方法に関する情報があります`OkHttp4Engine`。

#### 明示的な HTTP クライアントを使用する
<a name="http-client-explicit-usage"></a>

明示的な HTTP クライアントを使用する場合、不要になったときの閉鎖を含め、その有効期間はお客様の責任となります。HTTP クライアントは、それを使用するサービスクライアントと同じ期間以上存続する必要があります。

次のコード例は、 が`DynamoDbClient`アクティブな間、HTTP クライアントを存続させるコードを示しています。[https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html) 関数は、HTTP クライアントが正しく閉じることを確認します。

##### インポート
<a name="http-client-explicit-usage-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.seconds
```

##### コード
<a name="http-client-explicit-usage-ex-code"></a>

```
OkHttpEngine {
    maxConcurrency = 64u
    connectTimeout = 10.seconds
}.use { okHttpClient ->

     DynamoDbClient {
        region = "us-east-2"
        httpClient = okHttpClient
    }.use { ddb ->
        {
            // Perform some actions with Amazon DynamoDB.
        }
    }
}
```

### アイドル接続のモニタリング
<a name="http-idle-connection-monitoring"></a>

**重要**  
 OkHttp エンジンの接続アイドルポーリング機能 ([https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)) は、自動接続失敗の再試行 () に置き換えられました[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html)。接続アイドルポーリングは SDK バージョン **v1.7** では**廃止**され、SDK バージョン **v1.8** では**削除されます**。詳細については[、関連する GitHub ディスカッションの投稿](https://github.com/aws/aws-sdk-kotlin/discussions/1797)を参照してください。

[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/) には、リモートクロージャのアイドル接続をモニタリングする[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)設定オプションが用意されています。この機能は、サービスがまだ接続プールにある接続を閉じているかどうかを検出し、後続のリクエストのエラーを防止します。

`connectionIdlePollingInterval` が null 以外の値に設定されている場合、エンジンは接続プールに解放された接続をポーリングします。ポーリングプロセスは、指定された間隔に設定されたソケットタイムアウトでブロック読み取りを実行します。ポーリングは、エンジンがプールから接続を取得するか、接続が削除されて閉じられると自動的にキャンセルされます。

この値が `null` (デフォルト) の場合、ポーリングは無効になります。リモートで閉じられたプール内のアイドル接続は、後続の呼び出しで取得されたときにエラーが発生する可能性があります。

**注記**  
 ポーリングループはブロック読み取りを使用するため、接続を取得または終了するためのエンジン呼び出しは、`connectionIdlePollingInterval`間隔と同じ間隔で遅延する可能性があります。間隔に低い値を選択すると、SDK はアイドル状態のリソース使用量を増やすことなく、接続をより速く取得できます。

#### インポート
<a name="http-idle-connection-ex-imports"></a>

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.milliseconds
```

#### コード
<a name="http-idle-connection-ex-code"></a>

```
S3Client.fromEnvironment {
    httpEngine(OkHttpEngine) {
        connectionIdlePollingInterval = 50.milliseconds
    }
}.use { s3 -> 
  // Use the Amazon S3 client
}
```