

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

# 設定 AWS 區域 的 適用於 Rust 的 AWS SDK
<a name="region"></a>

您可以使用 存取在特定地理區域中操作 AWS 服務 的 AWS 區域。這對於備援和讓資料和應用程式靠近您和您的使用者存取它們的位置，都很有用。如需如何使用區域的詳細資訊，請參閱《 *AWS SDKs與工具參考指南*[AWS 區域](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html)》中的 。

**重要**  
大多數資源都位於特定 中， AWS 區域 您必須在使用 SDK 時為資源提供正確的區域。

您必須設定 SDK for Rust AWS 區域 的預設值，以用於 AWS 請求。此預設值用於非以 區域指定的任何 SDK 服務方法呼叫。

如需如何透過共用 AWS `config`檔案或環境變數設定預設區域的範例，請參閱《 *AWS SDKs與工具參考指南*[AWS 區域](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html)》中的 。

## AWS 區域 供應商鏈結
<a name="region-provider-chain"></a>

 從執行環境載入服務用戶端的組態時，會使用下列查詢程序。軟體開發套件尋找的第一個值用於用戶端的組態中。如需建立服務用戶端的詳細資訊，請參閱 [從環境設定用戶端](config-code.md#configure-a-client-from-the-environment)。

1. 任何以程式設計方式設定的明確區域。

1. 檢查 `AWS_REGION` 環境變數。
   + 如果您使用 AWS Lambda 服務，容器會自動設定此環境變數 AWS Lambda 。

1. 會檢查共用 AWS `config`檔案中的 `region` 屬性。
   + `AWS_CONFIG_FILE` 環境變數可用來變更共用`config`檔案的位置。若要進一步了解保留此檔案的位置，請參閱 SDK [`config`和工具參考指南中的共用和`credentials`檔案的位置](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)。 *AWS SDKs *
   + `AWS_PROFILE` 環境變數可用來選取具名設定檔，而非預設值。若要進一步了解如何設定不同的設定檔，請參閱 SDK [`config`和工具參考指南中的共用和`credentials`檔案](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。 *AWS SDKs *

1. SDK 會嘗試使用 Amazon EC2 執行個體中繼資料服務來判斷目前執行中 Amazon EC2 執行個體的區域。
   +  適用於 Rust 的 AWS SDK 僅支援 IMDSv2。

建立基本組態以與服務用戶端搭配使用時， `RegionProviderChain` 會自動使用，無需額外的程式碼：

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

## 在程式碼 AWS 區域 中設定
<a name="RegionProgram"></a>

### 在程式碼中明確設定區域
<a name="RegionNew"></a>

當您想要明確設定區域時，請`Region::new()`直接在組態中使用 。

不使用區域提供者鏈結 - 它不會檢查環境、共用`config`檔案或 Amazon EC2 執行個體中繼資料服務。

```
use aws_config::{defaults, BehaviorVersion};
use aws_sdk_s3::config::Region;

#[tokio::main]
async fn main() {
    let config = defaults(BehaviorVersion::latest())
        .region(Region::new("us-west-2"))
        .load()
        .await;

    println!("Using Region: {}", config.region().unwrap());
}
```

請確定您輸入的是 的有效字串 AWS 區域；所提供的值未經驗證。

### 自訂 `RegionProviderChain`
<a name="regionProviderChain"></a>

當您想要有條件地插入區域、覆寫區域或自訂解析度鏈[AWS 區域 供應商鏈結](#region-provider-chain)時，請使用 。

```
use aws_config::{defaults, BehaviorVersion};
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_s3::config::Region;
use std::env;

#[tokio::main]
async fn main() {  
    let region_provider = RegionProviderChain::first_try(env::var("CUSTOM_REGION").ok().map(Region::new))
        .or_default_provider()
        .or_else(Region::new("us-east-2"));
    
    let config = aws_config::defaults(BehaviorVersion::latest())
        .region(region_provider)
        .load()
        .await;

    println!("Using Region: {}", config.region().unwrap());
}
```

 先前的組態將：

1. 首先查看`CUSTOM_REGION`環境變數中是否設定了字串。

1. 如果無法使用，請回到預設區域提供者鏈結。

1. 如果失敗，請使用「us-east-2」作為最終備用。