

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在程式碼中設定適用於 Rust 服務用戶端的 AWS SDK
<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()`適用於大多數情況。如需詳細資訊，請參閱[在 中使用行為版本 適用於 Rust 的 AWS SDK](behavior-versions.md)。

## 將建置器模式用於服務特定的設定
<a name="configure-a-client-builder"></a>

有些選項只能在特定服務用戶端類型上設定。不過，大多數情況下，您仍然想要從環境載入大部分的組態，然後特別新增其他選項。建置器模式是木 適用於 Rust 的 AWS SDK 箱內的常見模式。您首先使用 載入一般組態`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);
```

探索特定服務用戶端類型可用的其他方法之一，就是使用 API 文件，例如 的 [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)。

## 進階明確用戶端組態
<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`函數的範例。