

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

# のコードでサービスクライアントを設定する AWS SDK for Java 2.x
<a name="configuring-service-clients-code"></a>

[外部でのサービスクライアントの設定](configuring-service-clients-ext.md)の代わりに、またはその追加として、コードを使用したプログラミングでサービスクライアントを設定できます。

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

## コードでの基本設定
<a name="conf-service-client-code-basic"></a>

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

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

前のスニペットは、静的ファクトリメソッド `builder()` を示しています。`builder()` メソッドは、サービスクライアントをカスタマイズできる `builder` オブジェクトを返します。fluent セッターは `builder` オブジェクトを返します (このケースでは [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html) インスタンス)。そのため、メソッドの呼び出しを連鎖させて利便性とコードの可読性を向上させることができます。必要なプロパティを設定した後、`build()` メソッドを呼び出してクライアントを作成します。

## コードでの高度な設定
<a name="conf-service-client-code-several"></a>

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

```
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();
```

前のスニペットには、サービスクライアントを設定するための複数のエントリポイントがあります。
+ すべてのサービスクライアントに共通する設定オプションを提供する[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.Builder.html)。これらの設定は AWS、HTTP 実装とは無関係に固有の動作です。
+ **別の HTTP クライアントビルダー実装による HTTP クライアント設定。**`ApacheHttpClient.Builder` はその一例です。サービスクライアントは、設定された HTTP クライアントをサービスクライアントに関連付ける `httpClientBuilder()` メソッドを提供します。
+ `region()` や `credentialsProvider()` などの**[クライアントビルダー](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html)自体のメソッド**

### 設定ブロックを使用した同一の設定
<a name="service-client-config-lambda"></a>

は、個別のオブジェクトを作成してサービスクライアントメソッドに渡す代わりに、Lambda 式を受け入れてこれらのオブジェクトをインラインで構築するメソッド AWS SDK for Java 2.x を提供します。ビルダーの設定メソッドの名前は同じですが、署名は異なります。例えば、次のようになります。
+ [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(software.amazon.awssdk.core.client.config.ClientOverrideConfiguration)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(software.amazon.awssdk.core.client.config.ClientOverrideConfiguration))
+ [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(java.util.function.Consumer))

前に示した、このアプローチを使用した 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();
```

## コードでは使用できない設定オプション
<a name="conf-servic-client-only-ext"></a>

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

### ファイルの場所設定
<a name="code-only-conf-file-loc"></a>

これらの設定は、共有設定ファイルと認証情報ファイルの場所を制御します。SDK がファイルを読み込んだ後にプログラムで上書きすることはできません。
+ **AWS\$1CONFIG\$1FILE** (環境変数) / **aws.configFile** (JVM システムプロパティ)
+ **AWS\$1SHARED\$1CREDENTIALS\$1FILE** (環境変数) / **aws.sharedCredentialsFile** (JVM システムプロパティ)

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

### インスタンスメタデータサービスの無効化
<a name="code-only-conf-imds"></a>
+ **AWS\$1EC2\$1METADATA\$1DISABLED** (環境変数) / **aws.disableEc2Metadata** (JVM システムプロパティ)

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

### プロファイルの選択
<a name="code-only-conf-profile"></a>
+ **AWS\$1PROFILE** (環境変数) / **aws.profile** (JVM システムプロパティ)

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

### コンテナの認証情報パス
<a name="code-only-conf-container-cred-path"></a>
+ **AWS\$1CONTAINER\$1CREDENTIALS\$1RELATIVE\$1URI**
+ **AWS\$1CONTAINER\$1CREDENTIALS\$1FULL\$1URI**
+ **AWS\$1CONTAINER\$1AUTHORIZATION\$1TOKEN**
+ **AWS\$1CONTAINER\$1AUTHORIZATION\$1TOKEN\$1FILE**

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

### デフォルトの HTTP 実装の選択
<a name="code-only-conf-http-impl"></a>
+ **SYNC\$1HTTP\$1SERVICE\$1IMPL** (環境変数) / **software.amazon.awssdk.http.service.impl** (JVM システムプロパティ)
+ **ASYNC\$1HTTP\$1SERVICE\$1IMPL** (環境変数) / **software.amazon.awssdk.http.async.service.impl** (JVM システムプロパティ)

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