HTTP クライアント設定 - AWS SDK for Kotlin

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

HTTP クライアント設定

デフォルトでは、 は OkHttp に基づく HTTP クライアント AWS SDK for Kotlin を使用します。明示的に設定されたクライアントを指定することで、HTTP クライアントとその設定を上書きできます。

警告

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

注記

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

基本的な設定

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

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

インポート

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

コード

DynamoDbClient { region = "us-east-2" httpClient { maxConcurrency = 64u connectTimeout = 10.seconds } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }

詳細設定

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

HTTP エンジンタイプの指定

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

次の例ではOkHttpEnginemaxConcurrencyPerHostプロパティの設定に使用できる を指定します。

インポート

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

コード

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. }

エンジンタイプに使用できる値は、OkHttpEngineOkHttp4Engine、および ですCrtHttpEngine

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

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

implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-okhttp")

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

implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-crt")

OkHttp4Engine の使用

デフォルトの OkHttp4Engineを使用できない場合は、 を使用しますOkHttpEnginesmithy-kotlin GitHub リポジトリには、 の設定方法と使用方法に関する情報がありますOkHttp4Engine

明示的な HTTP クライアントを使用する

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

次のコード例は、 がDynamoDbClientアクティブな間、HTTP クライアントを存続させるコードを示しています。use 関数は、HTTP クライアントが正しく閉じることを確認します。

インポート
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.seconds
コード
OkHttpEngine { maxConcurrency = 64u connectTimeout = 10.seconds }.use { okHttpClient -> DynamoDbClient { region = "us-east-2" httpClient = okHttpClient }.use { ddb -> { // Perform some actions with Amazon DynamoDB. } } }

アイドル接続のモニタリング

OkHttpEngine には、リモートクロージャのアイドル接続をモニタリングするconnectionIdlePollingInterval設定オプションが用意されています。この機能は、サービスがまだ接続プールにある接続を閉じた状態を検出し、後続のリクエストのエラーを防止します。

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

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

注記

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

インポート

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

コード

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