クライアント設定 - AWS SDK for Java 2.x

クライアント設定

1.x では、クライアントまたはクライアントビルダーで ClientConfiguration インスタンスを設定して、SDK クライアント設定が変更されていました。バージョン 2.x では、クライアント設定は別々の設定クラスに分割されています。別の設定クラスを使用することで、同期と非同期クライアントで異なる HTTP クライアントを設定したとしても、同じ ClientOverrideConfiguration クラスを使用できます。

例 バージョン 1.x のクライアント設定の場合
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
例 バージョン 2.x の同期クライアント設定の場合
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder(); ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder() .proxyConfiguration(proxyConfig.build()); ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder(); DynamoDbClient client = DynamoDbClient.builder() .httpClientBuilder(httpClientBuilder) .overrideConfiguration(overrideConfig.build()) .build();
例 バージョン 2.x の非同期クライアント設定の場合
NettyNioAsyncHttpClient.Builder httpClientBuilder = NettyNioAsyncHttpClient.builder(); ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder(); ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder(); DynamoDbAsyncClient client = DynamoDbAsyncClient.builder() .httpClientBuilder(httpClientBuilder) .overrideConfiguration(overrideConfig.build()) .asyncConfiguration(asyncConfig.build()) .build();

HTTP クライアント

重要な変更点

  • バージョン 2.x では、clientBuilder.httpClientBuilder を使用して実装を指定することで、ランタイムに使用する HTTP クライアントを変更できます。

  • clientBuilder.httpClient を使用して HTTP クライアントをサービスクライアントビルダーに渡すと、サービスクライアントが閉じても HTTP クライアントはデフォルトで閉じられません。これにより、サービスクライアント間で HTTP クライアントを共有できます。

  • 非同期 HTTP クライアントがノンブロッキング IO を使用するようになりました。

  • 一部のオペレーションでは、パフォーマンスを向上させるために HTTP/2 を使用するようになりました。

設定の変更

設定 1.x 2.x 同期、Apache 2.x 非同期、Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder()
NettyNioAsyncHttpClient.Builder httpClientBuilder = NettyNioAsyncHttpClient.builder()
最大接続数
clientConfig.setMaxConnections(...) clientConfig.withMaxConnections(...)
httpClientBuilder.maxConnections(...)
httpClientBuilder.maxConcurrency(...)
接続タイムアウト
clientConfig.setConnectionTimeout(...) clientConfig.withConnectionTimeout(...)
httpClientBuilder.connectionTimeout(...) httpClientBuilder.connectionAcquisitionTimeout(...)
httpClientBuilder.connectionTimeout(...)
ソケットタイムアウト
clientConfig.setSocketTimeout(...) clientConfig.withSocketTimeout(...)
httpClientBuilder.socketTimeout(...)
httpClientBuilder.writeTimeout(...) httpClientBuilder.readTimeout(...)
接続 TTL
clientConfig.setConnectionTTL(...) clientConfig.withConnectionTTL(...)
httpClientBuilder.connectionTimeToLive(...)
httpClientBuilder.connectionTimeToLive(...)
接続の最大アイドル
clientConfig.setConnectionMaxIdleMillis(...) clientConfig.withConnectionMaxIdleMillis(...)
httpClientBuilder.connectionMaxIdleTime(...)
httpClientBuilder.connectionMaxIdleTime(...)
アイドル状態後の検証
clientConfig.setValidateAfterInactivityMillis(...) clientConfig.withValidateAfterInactivityMillis(...)
サポートされていません (リクエスト機能) サポートされていません (リクエスト機能)
ローカルアドレス
clientConfig.setLocalAddress(...) clientConfig.withLocalAddress(...)
httpClientBuilder.localAddress(...)
サポートされていません
Expect-continue が有効
clientConfig.setUseExpectContinue(...) clientConfig.withUseExpectContinue(...)
httpClientBuilder.expectContinueEnabled(...)
サポートされていません (リクエスト機能)
接続リーパー
clientConfig.setUseReaper(...) clientConfig.withReaper(...)
httpClientBuilder.useIdleConnectionReaper(...)
httpClientBuilder.useIdleConnectionReaper(...)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .httpClientBuilder(httpClientBuilder) .build()
DynamoDbAsyncClient.builder() .httpClientBuilder(httpClientBuilder) .build()

HTTP クライアントプロキシ

設定 1.x 2.x 同期、Apache 2.x 非同期、Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
プロキシのホスト
clientConfig.setProxyHost(...) clientConfig.withProxyHost(...)
proxyConfig.endpoint(...)
proxyConfig.host(...)
プロキシのポート
clientConfig.setProxyPort(...) clientConfig.withProxyPort(...)
proxyConfig.endpoint(...)

プロキシポートendpoint に埋め込まれています

proxyConfig.port(...)
プロキシユーザー名
clientConfig.setProxyUsername(...) clientConfig.withProxyUsername(...)
proxyConfig.username(...)
proxyConfig.username(...)
プロキシのパスワード
clientConfig.setProxyPassword(...) clientConfig.withProxyPassword(...)
proxyConfig.password(...)
proxyConfig.password(...)
プロキシのドメイン
clientConfig.setProxyDomain(...) clientConfig.withProxyDomain(...)
proxyConfig.ntlmDomain(...)
サポートされていません (リクエスト機能)
プロキシのワークステーション
clientConfig.setProxyWorkspace(...) clientConfig.withProxyWorkstation(...)
proxyConfig.ntlmWorkstation(...)
サポートされていません (リクエスト機能)
プロキシの認証方法
clientConfig.setProxyAuthenticationMethods(...) clientConfig.withProxyAuthenticationMethods(...)

サポート外

サポートされていません (リクエスト機能)
プリエンプティブな基本プロキシ認証
clientConfig.setPreemptiveBasicProxyAuth(...) clientConfig.withPreemptiveBasicProxyAuth(...)
proxyConfig.preemptiveBasicAuthenticationEnabled(...)
サポートされていません (リクエスト機能)
非プロキシホスト
clientConfig.setNonProxyHosts(...) clientConfig.withNonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
ソケットプロキシの無効化
clientConfig.setDisableSocketProxy(...) clientConfig.withDisableSocketProxy(...)
サポートされていません (リクエスト機能) サポートされていません (リクエスト機能)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
httpClientBuilder.proxyConfiguration( proxyConfig.build())
httpClientBuilder.proxyConfiguration( proxyConfig.build())

クライアントの上書き

設定 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder()
ユーザーエージェントのプレフィックス
clientConfig.setUserAgentPrefix(...) clientConfig.withUserAgentPrefix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_PREFIX, ...)
ユーザーエージェントのサフィックス
clientConfig.setUserAgentSuffix(...) clientConfig.withUserAgentSuffix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_SUFFIX, ...)
Signer
clientConfig.setSignerOverride(...) clientConfig.withSignerOverride(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.SIGNER, ...)
追加のヘッダー
clientConfig.addHeader(...) clientConfig.withHeader(...)
overrideConfig.putHeader(...)
リクエストのタイムアウト
clientConfig.setRequestTimeout(...) clientConfig.withRequestTimeout(...)
overrideConfig.apiCallAttemptTimeout(...)
クライアントの実行タイムアウト
clientConfig.setClientExecutionTimeout(...) clientConfig.withClientExecutionTimeout(...)
overrideConfig.apiCallTimeout(...)
Gzip の使用
clientConfig.setUseGzip(...) clientConfig.withGzip(...)

サポートされていません (リクエスト機能)

ソケットバッファのサイズに関するヒント
clientConfig.setSocketBufferSizeHints(...) clientConfig.withSocketBufferSizeHints(...)
サポートされていません (リクエスト機能)
レスポンスメタデータのキャッシュ
clientConfig.setCacheResponseMetadata(...) clientConfig.withCacheResponseMetadata(...)
サポートされていません (リクエスト機能)
レスポンスメタデータのキャッシュサイズ
clientConfig.setResponseMetadataCacheSize(...) clientConfig.withResponseMetadataCacheSize(...)
サポートされていません (リクエスト機能)
DNS リゾルバー
clientConfig.setDnsResolver(...) clientConfig.withDnsResolver(...)
サポートされていません (リクエスト機能)
TCP キープアライブ
clientConfig.setUseTcpKeepAlive(...) clientConfig.withTcpKeepAlive(...)

このオプションは HTTP クライアント設定になりました

- ApacheHttpClient.builder().tcpKeepAlive(true) - NettyNioAsyncHttpClient.builder().tcpKeepAlive(true)
ランダムな保護
clientConfig.setSecureRandom(...) clientConfig.withSecureRandom(...)
サポートされていません (リクエスト機能)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .overrideConfiguration(overrideConfig.build()) .build()

クライアント上書きの再試行

設定 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfigBuilder = ClientOverrideConfiguration.builder();
最大エラー再試行回数
clientConfig.setMaxErrorRetry(...) clientConfig.withMaxErrorRetry(...)
// Configure the default retry strategy. overrideConfigBuilder.retryStrategy(b -> b.maxAttempts(...));
スロットリングされた再試行の使用
clientConfig.setUseThrottleRetries(...) clientConfig.withUseThrottleRetries(...)
サポートされていません
スロットリング前の最大連続再試行回数
clientConfig.setMaxConsecutiveRetriesBeforeThrottling(...) clientConfig.withMaxConsecutiveRetriesBeforeThrottling(...)
サポートされていません
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .overrideConfiguration(overrideConfigBuilder.build()) .build(); // You also have the option to use a lambda expression to configure and // build the 'ClientOverrideConfiguration.Builder'. DynamoDbClient client = DynamoDbClient.builder() .overrideConfiguration(o -> o.retryStrategy(b -> b.maxAttempts(5))) .build();

非同期クライアント

設定 1.x 2.x
ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder()
エグゼキュター
AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(...) .build()
asyncConfig.advancedOption( SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, ...)
DynamoDbAsyncClient.builder() .asyncConfiguration(asyncConfig) .build()

その他のクライアントの変更

1.x の次の ClientConfiguration オプションは SDK の 2.x で変更されており、直接同等のオプションはありません。

設定 1.x 2.x の同等オプション
プロトコル
clientConfig.setProtocol(Protocol.HTTP) clientConfig.withProtocol(Protocol.HTTP)

デフォルトでは、プロトコル設定は HTTPS です。設定を変更するには、クライアントビルダーで プロトコル設定に HTTP エンドポイントを指定します。

clientBuilder.endpointOverride( URI.create("http://..."))