のコードでサービスクライアントを設定する AWS SDK for Java 2.x - AWS SDK for Java 2.x

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

のコードでサービスクライアントを設定する AWS SDK for Java 2.x

外部でサービスクライアントを設定する代わりに、または追加して、プログラムでコードでサービスクライアントを設定できます。

サービスクライアントをコードで設定することで、利用可能な多くのオプションをきめ細かく制御できます。外部で設定できる設定のほとんどは、コードで設定することもできます。

コードの基本設定

たとえば、次のスニペットでは、Amazon S3 サービスクライアントの AWS リージョン EU_SOUTH_2 をコードで に設定します。

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();

前のスニペットは、静的ファクトリメソッド を示していますbuilder()builder() メソッドは、サービスクライアントをカスタマイズできる builder オブジェクトを返します。流暢なセッターメソッドは、この場合はS3ClientBuilderインスタンスである builder オブジェクトを返すため、メソッドの呼び出しを連鎖させて利便性を高め、コードを読みやすくすることができます。必要なプロパティを設定した後、build() メソッドを呼び出してクライアントを作成します。

コードの高度な設定

次のスニペットは、追加の設定オプションを示しています。

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();

前のスニペットでは、サービスクライアントを設定するためのいくつかのエントリポイントを確認できます。

  • すべてのサービスクライアントに共通する設定オプションを提供するClientOverrideConfiguration.Builderオブジェクト。これらの設定は AWS、HTTP 実装とは無関係に固有の動作です。

  • 別の HTTP クライアントビルダー実装による HTTP クライアント設定。が例ApacheHttpClient.Builderです。サービスクライアントは、設定された HTTP クライアントをサービスクライアントに関連付けるhttpClientBuilder()方法を提供します。

  • region() や などクライアントビルダー自体のメソッド credentialsProvider()

は、個別のオブジェクトを作成してサービスクライアントメソッドに渡す代わりに、Lambda 式を受け入れてこれらのオブジェクトをインラインで構築するメソッド AWS SDK for Java 2.x を提供します。ビルダーの設定メソッドの名前は同じですが、署名は異なります。例:

このアプローチを使用して前に示した S3 クライアントの設定は、1 つのコードブロックで行うことができます。

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();

コードで使用できない設定オプション

次の設定は SDK の基本的な初期化プロセスに影響するため、次の設定は外部でのみ設定でき、コードでは設定できません。

ファイルの場所の設定

これらの設定は、共有設定ファイルと認証情報ファイルの場所を制御し、SDK がファイルを読み込んだ後にプログラムで上書きすることはできません。

  • AWS_CONFIG_FILE (環境変数) / aws.configFile(JVM システムプロパティ)

  • AWS_SHARED_CREDENTIALS_FILE (環境変数) / aws.sharedCredentialsFile (JVM システムプロパティ)

これらの設定は、SDK が設定ファイルを読み込む前に設定する必要があります。SDK が設定を検索する場所を決定します。SDK が初期化されると、これらの値を変更しても効果はありません。

インスタンスメタデータサービスの無効化

  • AWS_EC2_METADATA_DISABLED (環境変数) / aws.disableEc2Metadata (JVM システムプロパティ)

この設定は、SDK が EC2 インスタンスメタデータサービスをまったく使用しようとするかどうかを制御します。SDK が初期化されると、この設定をプログラムで変更することはできません。

プロファイルの選択

  • AWS_PROFILE (環境変数) / aws.profile (JVM システムプロパティ)

この設定は、共有設定ファイルと認証情報ファイルからロードするプロファイルを SDK に指示します。ロード後、この値を変更しても効果はありません。

コンテナ認証情報パス

  • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  • AWS_CONTAINER_CREDENTIALS_FULL_URI

  • AWS_CONTAINER_AUTHORIZATION_TOKEN

  • AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE

これらの環境変数を使用して、コンテナサービスから認証情報を取得する方法を SDK に指示します。サービスクライアントの初期化中に認証情報プロバイダーチェーンが確立されると、これらの設定を変更することはできません。

デフォルトの HTTP 実装の選択

  • SYNC_HTTP_SERVICE_IMPL (環境変数) / software.amazon.awssdk.http.service.impl (JVM システムプロパティ)

  • ASYNC_HTTP_SERVICE_IMPL (環境変数) / software.amazon.awssdk.http.async.service.impl (JVM システムプロパティ)

これらのグローバル設定は、個々のサービスクライアントのコードで上書きされない限り、SDK がすべてのサービスクライアントに使用する HTTP クライアントの実装を決定します。SDK が HTTP クライアントを初期化する前にこれらを設定する必要があります。後で変更することはできません。