

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

# コードでの AWS SDK for Rust サービスクライアントの設定
<a name="config-code"></a>

設定がコード内で直接処理される場合、設定のスコープは、そのコードを使用するアプリケーションに限定されます。そのアプリケーション内には、すべてのサービスクライアントに対するグローバル設定、特定の AWS のサービス タイプのすべてのクライアントに対する設定、特定のサービスクライアントインスタンスに対する設定のオプションがあります。

にリクエストを行うには AWS のサービス、まずそのサービスのクライアントをインスタンス化します。タイムアウトや HTTP クライアント、再試行設定など、サービスクライアントの共通設定を行うことができます。

各サービスクライアントには、 AWS リージョン と認証情報プロバイダーが必要です。SDK はこれらの値を使用して、リソースの正しいリージョンにリクエストを送信し、正しい認証情報でリクエストに署名します。これらの値はコード内でプログラムによって指定することも、環境から自動的にロードされるようにすることもできます。

**注記**  
サービスクライアントはコンストラクトにコストがかかることが多く、一般的に共有されることを想定しています。これを容易にするため、すべての `Client` 構造体は `Clone` を実装します。

## 環境からクライアントを設定する
<a name="configure-a-client-from-the-environment"></a>

環境ソース設定でクライアントを作成するには、`aws-config` クレートの静的メソッドを使用します。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);
```

この方法でクライアントを作成することは、Amazon Elastic Compute Cloud で実行する場合 AWS Lambdaや、サービスクライアントの設定が環境から直接利用できるその他のコンテキストで実行する場合に便利です。これにより、コードが実行中の環境から切り離され、コードを変更 AWS リージョン せずにアプリケーションを複数の にデプロイすることが容易になります。

特定のプロパティを明示的にオーバーライドできます。明示的な設定は、実行環境から解決される設定よりも優先されます。次の例では、環境から設定を読み込みますが、明示的に AWS リージョンをオーバーライドしています。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .region("us-east-1")
    .load()
    .await;
    
let s3 = aws_sdk_s3::Client::new(&config);
```

**注記**  
すべての設定値がクライアントの作成時に読み込まれるわけではありません。クライアントがリクエストを行う際に、一時的なアクセスキーや IAM Identity Center の設定などの認証情報関連の設定は、認証情報プロバイダーレイヤーによってアクセスされます。

前の例に示すコード `BehaviorVersion::latest()` は、デフォルトに使用する SDK のバージョンを示しています。`BehaviorVersion::latest()` は、ほとんどのケースで適しています。詳細については、「[での動作バージョンの使用 AWS SDK for Rust](behavior-versions.md)」を参照してください。

## サービス固有の設定にビルダーパターンを使用する
<a name="configure-a-client-builder"></a>

オプションの中には、特定のサービスクライアントタイプでのみ設定できるものがあります。ただし、ほとんどの場合、設定の大部分は環境から読み込み、その後に追加のオプションを特に指定して追加する場合が多いです。ビルダーパターンは、 AWS SDK for Rust クレート内の一般的なパターンです。まず `aws_config::defaults` を使用して一般的な設定を読み込み、次に `from` メソッドを使用して、その設定を作業中のサービスのビルダーに読み込みます。その後、そのサービスの一意の設定値を設定し、`build` を呼び出すことができます。最後に、この変更後の設定からクライアントが作成されます。

```
// Call a static method on aws-config that sources default config values.
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

// Use the Builder for S3 to create service-specific config from the default config.
let s3_config = aws_sdk_s3::config::Builder::from(&config)
    .accelerate(true) // Set an S3-only configuration option
    .build();

// Create the client.
let s3 = aws_sdk_s3::Client::from_conf(s3_config);
```

特定のタイプのサービスクライアントで使用できる追加メソッドを検出する方法の 1 つは、[https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/config/struct.Builder.html](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/config/struct.Builder.html) などの API ドキュメントを使用することです。

## 高度な明示的なクライアント設定
<a name="configure-a-client-explicitly"></a>

環境から設定をロードする代わりに、特定の値でサービスクライアントを設定するには、次に示すように、クライアント `Config` ビルダーで指定できます。

```
let conf = aws_sdk_s3::Config::builder()
    .region("us-east-1")
    .endpoint_resolver(my_endpoint_resolver)
    .build();

let s3 = aws_sdk_s3::Client::from_conf(conf);
```

`aws_sdk_s3::Config::builder()` を使用してサービス設定を作成した場合、*デフォルト設定は読み込まれません*。デフォルトは、`aws_config::defaults` に基づいて設定を作成する場合にのみ読み込まれます。

オプションの中には、特定のサービスクライアントタイプでのみ設定できるものがあります。前の例は、Amazon S3 クライアントで `endpoint_resolver` 関数を使用する例を示しています。