Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

CRT AWS ベースの HTTP クライアントを設定する - AWS SDK for Java 2.x

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

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

CRT AWS ベースの HTTP クライアントを設定する

AWS CRT ベースの HTTP クライアントには、同期 AwsCrtHttpClient と非同期 AwsCrtAsyncHttpClient が含まれます。 AWS CRT ベースの HTTP クライアントには、次の HTTP クライアントの利点があります。

  • SDK 起動時間の短縮

  • より小さなメモリフットプリント

  • レイテンシータイムの短縮

  • 接続のヘルス管理

  • DNS ロードバランサー

AWS SDK の CRT ベースのコンポーネント

このトピックで説明されている AWS CRT ベースの HTTP クライアントと AWS CRT ベースの S3 クライアントは SDK の異なるコンポーネントです。

同期および非同期のAWS CRT ベースの HTTP クライアントは、SDK HTTP インターフェイスを実装したもので、一般的な HTTP 通信に使用されます。これらは SDK の他の同期 または 非同期の HTTP クライアントに代わるものですが、その他の利点もあります。

AWS CRT ベースの S3 クライアントS3AsyncClient インターフェイスの実装であり、Amazon S3 サービスを利用するために使用されます。これは S3AsyncClient インターフェースの Java ベース実装に代わるもので、いくつかの利点があります。

どちらのコンポーネントも AWS Common Runtime のライブラリを使用していますが、CRT ベースの HTTP AWS クライアントは aws-c-s3 ライブラリを使用しておらず、S3 マルチパートアップロード API 機能もサポートしていません。対照的に、 AWS CRT ベースの S3 クライアントは、S3 マルチパートアップロード API 機能をサポートするように設計されています。

CRT AWS ベースの HTTP クライアントにアクセスする

CRT AWS ベースの HTTP クライアントを使用する前に、最小バージョン 2.22.0 のaws-crt-clientアーティファクトをプロジェクトの依存関係に追加します。

Maven pom.xml ファイルをセットアップするには、次のいずれかのオプションを使用します。

注記

ランタイムの依存関係のサイズを小さくする必要がある場合、たとえばアプリケーションが AWS Lambda 関数で実行されている場合などに、プラットフォーム固有の jar オプションを使用できます。

Uber-jar option

デフォルトでは、 は Linux、Windows、macOS AWS など、複数のプラットフォームのバイナリを含む CRT アーティファクトの uber-jar aws-crt-clientを使用します。

<project> <properties> <aws.sdk.java.version>2.29.10*</aws.sdk.java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>${aws.sdk.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency> </dependencies> </project>

*赤で表示されているバージョンを、使用する Java SDK のバージョンに置き換えます。Maven Central で最新の を見つけます。

Platform-specific jar option

Java ランタイムをプラットフォーム固有のバージョンの CRT AWS ライブラリに制限するには、Uber-jar オプションに次の変更を加えます。

  • SDK のaws-crt-clientアーティファクトに exclusions要素を追加します。この除外により、SDK が CRT AWS uber-jar を一時的に使用できなくなります。

  • 必要な特定の CRT AWS プラットフォームバージョンの依存関係要素を追加します。正しいバージョンを決定する方法については、以下のステップを参照して CRT AWS アーティファクトのバージョンを確認してください。

<project> <properties> <aws.sdk.java.version>2.29.101</aws.sdk.java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>${aws.sdk.java.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <exclusions> <exclusion> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.31.32</version> <classifier>linux-x86_643</classifier> </dependency> </dependencies>

1赤で表示されているバージョンを、使用する Java SDK のバージョンに置き換えます。Maven Central で最新の を見つけます。

2Uber-jar オプションによってsoftware.amazon.awssdk.crt:aws-crt提供される のバージョンを置き換えます。CRT AWS アーティファクトのバージョンを確認するには、次のステップを参照してください。

3 値をプラットフォームの classifier 値に置き換えます。使用可能な値のリストについては、Java GitHub の AWS CRT ページを参照してください。

CRT AWS アーティファクトのバージョンを決定する手順

次の手順を使用して、使用している SDK for Java AWS のバージョンと互換性のある CRT アーティファクトのバージョンを確認します。

  1. Uber-jar オプションに示すようにpom.xml、 ファイルをセットアップします。この設定により、 SDK のどのバージョンsoftware.amazon.awssdk.crt:aws-crtがデフォルトで導入されているかを確認できます。

  2. プロジェクトのルート ( pom.xml ファイルと同じディレクトリ) で、次の Maven コマンドを実行します。

    mvn dependency:tree -Dincludes=software.amazon.awssdk.crt:aws-crt

    Maven は他のアクションを実行する場合がありますが、最後に SDK が推移的に使用するsoftware.amazon.awssdk.crt:aws-crt依存関係のコンソール出力が表示されます。次のスニペットは、 の SDK バージョンに基づくサンプル出力を示しています2.29.10

    [INFO] org.example:yourProject:jar:1.0-SNAPSHOT [INFO] \- software.amazon.awssdk:aws-crt-client:jar:2.29.10:compile [INFO] \- software.amazon.awssdk.crt:aws-crt:jar:0.31.3:compile
  3. software.amazon.awssdk.crt:aws-crt アーティファクトに対してコンソールに表示されるバージョンを使用します。この場合、 0.31.3pom.xml ファイルに追加します。

デフォルトでは、 は Linux、Windows、macOS AWS など、複数のプラットフォームのバイナリを含む CRT アーティファクトの uber-jar aws-crt-clientを使用します。

<project> <properties> <aws.sdk.java.version>2.29.10*</aws.sdk.java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>${aws.sdk.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency> </dependencies> </project>

*赤で表示されているバージョンを、使用する Java SDK のバージョンに置き換えます。Maven Central で最新の を見つけます。

CRT AWS ベースの HTTP クライアントの使用と設定

サービスクライアントの構築とともに CRT AWS ベースの HTTP クライアントを設定することも、複数のサービスクライアント間で共有するように 1 つのインスタンスを設定することもできます。

どちらの方法でも、ビルダーを使用して CRT AWS ベースの HTTP クライアントインスタンスのプロパティを設定します

ベストプラクティス: インスタンスをサービスクライアント専有にする

AWS CRT ベースの HTTP クライアントのインスタンスを設定する必要がある場合は、サービスクライアント と共にインスタンスを構築して専用にすることをお勧めします。これを行うには、サービスクライアントのビルダーの httpClientBuilder メソッドを使用します。これにより、HTTP クライアントのライフサイクルは SDK によって管理されるため、不要になったときに CRT AWS ベースの HTTP クライアントインスタンスが閉じられない場合にメモリリークが発生する可能性を回避できます。

次の例では、S3 サービスクライアントを作成し、 connectionTimeoutmaxConcurrencyの値を使用して AWS CRT ベースの HTTP クライアントを設定します。

Synchronous client

インポート

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Singleton: Use s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100)) .build(); // Perform work with the s3Client. // Requests completed: Close the s3Client. s3Client.close();
Asynchronous client

インポート

import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient; import software.amazon.awssdk.services.s3.S3AsyncClient; import java.time.Duration;

コード

// Singleton: Use s3AsyncClient for all requests. S3AsyncClient s3AsyncClient = S3AsyncClient.builder() .httpClientBuilder(AwsCrtAsyncHttpClient .builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100)) .build(); // Perform work with the s3AsyncClient. // Requests completed: Close the s3AsyncClient. s3AsyncClient.close();

インポート

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Singleton: Use s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100)) .build(); // Perform work with the s3Client. // Requests completed: Close the s3Client. s3Client.close();

別の方法: インスタンスを共有する

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

注記

AWS CRT ベースの HTTP クライアントインスタンスを共有する場合は、破棄する準備ができたらインスタンスを閉じる必要があります。サービスクライアントが閉じられても、SDK はインスタンスを閉じません。

次の例では、 connectionTimeoutmaxConcurrencyの値を使用して AWS CRT ベースの HTTP クライアントインスタンスを設定します。設定された httpClient インスタンスは、各サービスクライアントのビルダーのメソッドに渡されます。サービスクライアントと HTTP クライアントが不要になると、それらは明示的に閉じられます。HTTP クライアントは最後に閉じられます。

Synchronous client

インポート

import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode; import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Create an AwsCrtHttpClient shared instance. SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100) .build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); crtHttpClient.close(); // Explicitly close crtHttpClient.
Asynchronous client

インポート

import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode; import software.amazon.awssdk.http.async.SdkAsyncHttpClient; import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import software.amazon.awssdk.services.s3.S3AsyncClient; import java.time.Duration;

コード

// Create an AwsCrtAsyncHttpClient shared instance. SdkAsyncHttpClient crtAsyncHttpClient = AwsCrtAsyncHttpClient.builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100) .build(); // Singletons: Use the s3AsyncClient and dynamoDbAsyncClient for all requests. S3AsyncClient s3AsyncClient = S3AsyncClient.builder() .httpClient(crtAsyncHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); DynamoDbAsyncClient dynamoDbAsyncClient = DynamoDbAsyncClient.builder() .httpClient(crtAsyncHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); // Requests completed: Close all service clients. s3AsyncClient.close(); dynamoDbAsyncClient.close(); crtAsyncHttpClient.close(); // Explicitly close crtAsyncHttpClient.

インポート

import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode; import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Create an AwsCrtHttpClient shared instance. SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .connectionTimeout(Duration.ofSeconds(3)) .maxConcurrency(100) .build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(crtHttpClient) .credentialsProvider(EnvironmentVariableCredentialsProvider.crea .defaultsMode(DefaultsMode.IN_REGION) .region(Region.US_EAST_1) .build(); // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); crtHttpClient.close(); // Explicitly close crtHttpClient.

CRT AWS ベースの HTTP クライアントをデフォルトとして設定する

Maven ビルドファイルは、サービスクライアントのデフォルトの HTTP クライアントとして SDK が AWS CRT ベースの HTTP クライアントを使用するように設定できます。

そのためには、デフォルトの HTTP クライアント依存関係を持つ exclusions 要素を各サービスクライアントアーティファクトに追加します。

次のpom.xml例では、SDK は S3 サービスに AWS CRT ベースの HTTP クライアントを使用します。コード内のサービスクライアントが S3AsyncClient の場合、SDK は AwsCrtAsyncHttpClient を使用します。サービスクライアントが S3Client の場合、SDK は AwsCrtHttpClient を使用します。この設定では、デフォルトの Netty ベースの非同期 HTTP クライアントと、デフォルトの Apache ベースの同期 HTTP は使用できません。

<project> <properties> <aws.sdk.version>VERSION</aws.sdk.version> </properties> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>${aws.sdk.version}</version> <exclusions> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> </exclusion> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency> </dependencies> </project>

Maven central リポジトリにアクセスして、最新のバージョン値を確認します。

注記

1 つの pom.xml ファイル内で複数のサービスクライアントが宣言されている場合は、すべて exclusions XML 要素を必要とします。

Java システムプロパティを使用する

アプリケーションのデフォルトの HTTP として AWS CRT ベースの HTTP クライアントを使用するには、Java システムプロパティsoftware.amazon.awssdk.http.async.service.implを の値に設定しますsoftware.amazon.awssdk.http.crt.AwsCrtSdkHttpService

アプリケーションの起動時に設定するには、次のようなコマンドを実行します。

java app.jar -Dsoftware.amazon.awssdk.http.async.service.impl=\ software.amazon.awssdk.http.crt.AwsCrtSdkHttpService

次のコードスニペットを使用して、アプリケーションコードでシステムプロパティを設定します。

System.setProperty("software.amazon.awssdk.http.async.service.impl", "software.amazon.awssdk.http.crt.AwsCrtSdkHttpService");
注記

システムプロパティを使用して AWS CRT ベースの HTTP クライアントの使用を設定する場合は、 poml.xml ファイル内のaws-crt-clientアーティファクトへの依存関係を追加する必要があります。

AWS CRT ベースの HTTP クライアントの詳細設定

接続ヘルス設定や最大アイドル時間など、CRT AWS ベースの HTTP クライアントのさまざまな設定を使用できます。AwsCrtAsyncHttpClient利用可能な設定オプションを確認できます。AwsCrtHttpClient にも同じオプションを設定できます。

接続のヘルス設定

HTTP クライアントビルダーの connectionHealthConfigurationメソッドを使用して、CRT AWS ベースの HTTP クライアントの接続ヘルス設定を構成できます。

次の例では、接続ヘルス設定と接続の最大アイドル時間で設定された AWS CRT ベースの HTTP クライアントインスタンスを使用する S3 サービスクライアントを作成します。

Synchronous client

インポート

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Singleton: Use the s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionHealthConfiguration(builder -> builder .minimumThroughputInBps(32000L) .minimumThroughputTimeout(Duration.ofSeconds(3))) .connectionMaxIdleTime(Duration.ofSeconds(5))) .build(); // Perform work with s3Client. // Requests complete: Close the service client. s3Client.close();
Asynchronous client

インポート

import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient; import software.amazon.awssdk.services.s3.S3AsyncClient; import java.time.Duration;

コード

// Singleton: Use the s3AsyncClient for all requests. S3AsyncClient s3AsyncClient = S3AsyncClient.builder() .httpClientBuilder(AwsCrtAsyncHttpClient .builder() .connectionHealthConfiguration(builder -> builder .minimumThroughputInBps(32000L) .minimumThroughputTimeout(Duration.ofSeconds(3))) .connectionMaxIdleTime(Duration.ofSeconds(5))) .build(); // Perform work with s3AsyncClient. // Requests complete: Close the service client. s3AsyncClient.close();

インポート

import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

コード

// Singleton: Use the s3Client for all requests. S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient .builder() .connectionHealthConfiguration(builder -> builder .minimumThroughputInBps(32000L) .minimumThroughputTimeout(Duration.ofSeconds(3))) .connectionMaxIdleTime(Duration.ofSeconds(5))) .build(); // Perform work with s3Client. // Requests complete: Close the service client. s3Client.close();

HTTP/2 サポート

HTTP/2 プロトコルは CRT AWS ベースの HTTP クライアントではまだサポートされていませんが、今後のリリースが予定されています。

それまでの間、KinesisAsyncClientTranscribeStreamingAsyncClient などの HTTP/2 サポートを必要とするサービスクライアントを使用している場合は、代わりに NettynioAsyncHttpClient の使用を検討してください。

プロキシ設定例

次のコードスニペットは、コード内でプロキシの設定を行うために使用する ProxyConfiguration.Builder の使用方法を示しています。

Synchronous client

インポート

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.http.crt.ProxyConfiguration;

コード

SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .host("myproxy") .port(1234) .username("username") .password("password") .nonProxyHosts(Set.of("localhost", "host.example.com")) .build()) .build();
Asynchronous client

インポート

import software.amazon.awssdk.http.async.SdkAsyncHttpClient; import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient; import software.amazon.awssdk.http.crt.ProxyConfiguration;

コード

SdkAsyncHttpClient crtAsyncHttpClient = AwsCrtAsyncHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .host("myproxy") .port(1234) .username("username") .password("password") .nonProxyHosts(Set.of("localhost", "host.example.com")) .build()) .build();

インポート

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.http.crt.ProxyConfiguration;

コード

SdkHttpClient crtHttpClient = AwsCrtHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .host("myproxy") .port(1234) .username("username") .password("password") .nonProxyHosts(Set.of("localhost", "host.example.com")) .build()) .build();

プロキシ設定に対応する Java システムプロパティは、以下のコマンドラインスニペットに示されています。

$ java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=1234 -Dhttps.proxyUser=username \ -Dhttps.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App
重要

HTTPS プロキシのシステムプロパティのいずれかを使用するには、scheme プロパティをコード内で https に設定する必要があります。スキームプロパティがコードで設定されていない場合、スキームのデフォルトは HTTP になり、SDK は http.* システムプロパティのみを検索します。

環境変数を使用する同等の設定は次のとおりです。

// Set the following environment variables. // $ export HTTPS_PROXY="https://username:password@myproxy:1234" // $ export NO_PROXY="localhost|host.example.com" // Set the 'useSystemPropertyValues' to false on the proxy configuration. SdkAsyncHttpClient crtAsyncHttpClient = AwsCrtAsyncHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .useSystemPropertyValues(Boolean.FALSE) .build()) .build(); // Run the application. // $ java -cp ... App
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.