翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTP クライアント
サービスHTTPクライアントに使用するクライアントを変更したり、 を使用してHTTPクライアントのデフォルト設定を変更したりできます AWS SDK for Java 2.x。このセクションでは、 のHTTPクライアントと設定について説明しますSDK。
HTTP SDK for Java で利用可能なクライアント
同期クライアント
SDK for Java の同期HTTPクライアントは、 SdkHttpClientS3Client
や などの同期サービスクライアントではDynamoDbClient
、同期HTTPクライアントを使用する必要があります。 AWS SDK for Java には 3 つの同期HTTPクライアントがあります。
- ApacheHttpClient (デフォルト)
-
ApacheHttpClient
は、同期サービスHTTPクライアントのデフォルトクライアントです。 ApacheHttpClient
の設定の詳細については、「Apache ベースのHTTPクライアントを設定する」を参照してください。 - AwsCrtHttpClient
-
AwsCrtHttpClient
は、高いスループットとノンブロッキング IO を提供します。これは、 AWS Common Runtime (CRT) Http クライアント上に構築されています。 AwsCrtHttpClient
の設定と、サービスクライアントと一緒に使用する方法については、「AWS CRT ベースの HTTP クライアントを設定する」を参照してください。 - UrlConnectionHttpClient
-
アプリケーションが使用するジャーとサードパーティーライブラリの数を最小限に抑えるには、 を使用できますUrlConnectionHttpClient
。 UrlConnectionHttpClient
の設定の詳細については、「URLConnectionベースのHTTPクライアントを設定する」を参照してください。
非同期クライアント
SDK for Java の非同期HTTPクライアントは、 SdkAsyncHttpClientS3AsyncClient
や などの非同期サービスクライアントではDynamoDbAsyncClient
、非同期HTTPクライアントを使用する必要があります。 AWS SDK for Java には 2 つの非同期HTTPクライアントがあります。
- NettyNioAsyncHttpClient (デフォルト)
-
NettyNioAsyncHttpClient
は、非同期HTTPクライアントで使用されるデフォルトのクライアントです。 NettyNioAsyncHttpClient
の設定の詳細については、「Netty ベースのHTTPクライアントを設定する」を参照してください。 - AwsCrtAsyncHttpClient
-
AwsCrtAsyncHttpClient
は、 AWS 共通ランタイム (CRT) HTTPクライアントに基づいています。 AwsCrtAsyncHttpClient
の設定の詳細については、「AWS CRT ベースの HTTP クライアントを設定する」を参照してください。
HTTP クライアントのレコメンデーション
HTTP クライアントの実装を選択すると、いくつかの要因が関係します。決定には以下の情報を参考にしてください。
推奨事項フローチャート
次のフローチャートは、使用するHTTPクライアントを判断するのに役立つ一般的なガイダンスを示しています。
HTTP クライアント比較
次の表は、各HTTPクライアントの詳細な情報を示しています。
HTTP クライアント | 同期または非同期 | どのようなときに使うか | 制限/欠点 |
---|---|---|---|
Apache ベースのHTTPクライアント (デフォルトの同期HTTPクライアント) |
同期 | 高スループットよりも低レイテンシーを好む場合に使用します | 他のHTTPクライアントに比べて起動時間が遅い |
URLConnectionベースのHTTPクライアント | 同期 | サードパーティの依存関係を制限するという厳しい要件がある場合に使用します | Amazon APIGateway Update オペレーションAPISなどの一部の が必要とする HTTPPATCHメソッドをサポートしていません |
AWS CRTベースの同期HTTPクライアント 1 | 同期 |
• アプリケーションが で実行されている場合に使用します。 AWS Lambda • 低レイテンシーよりも高スループットを好む場合に使用します • 同期SDKクライアントが必要な場合は、これを使用します。 |
次の Java システムプロパティはサポートされていません。
|
Netty ベースのHTTPクライアント (デフォルトの非同期HTTPクライアント) |
非同期 |
• アプリケーションが Kinesis などの HTTP/2 サポートを必要とする APIs を呼び出す場合に使用します。 API SubscribeToShard |
他のHTTPクライアントに比べて起動時間が遅い |
AWS CRTベースの非同期HTTPクライアント1 | 非同期 | • アプリケーションが AWS Lambdaで実行されている場合に使用します • 低レイテンシーよりも高スループットを好む場合に使用します • 非同期SDKクライアントが必要な場合は、これを使用します。 |
• 次の Java システムプロパティはサポートされていません。
|
1これらの利点が追加されているため、可能であれば AWS CRTベースのHTTPクライアントを使用することをお勧めします。
スマート設定のデフォルト
AWS SDK for Java 2.x (バージョン 2.17.102 以降) には、スマート設定のデフォルト機能が用意されています。この機能は、2 つのHTTPクライアントプロパティと、HTTPクライアントに影響を与えない他のプロパティを最適化します。
スマート設定のデフォルトは、指定したデフォルトモードの値に基づいて、connectTimeoutInMillis
および tlsNegotiationTimeoutInMillis
プロパティに適切な値を設定します。デフォルトモードの値は、アプリケーションの特性に基づいて選択します。
スマート設定のデフォルトと、アプリケーションに最適なデフォルトのモード値を選択する方法の詳細については、AWS SDKs「」および「ツールリファレンスガイド」を参照してください。
アプリケーションのデフォルトモードを設定する 4 つの方法は以下のとおりです。
システムプロパティ、環境変数、または AWS 設定ファイルを使用してデフォルトモードをグローバルに設定すると、HTTPクライアントを構築するときに設定を上書きできます。
httpClientBuilder()
メソッドを使用してHTTPクライアントを構築する場合、設定は構築するインスタンスにのみ適用されます。この例をこちらに示します。この例では、Netty ベースのHTTPクライアントは、 connectTimeoutInMillis
と に対してグローバルに設定されたデフォルトモード値を上書きしますtlsNegotiationTimeoutInMillis
。