

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)，以繼續接收新功能、可用性改善和安全性更新。

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

# AWS 區域 選擇
<a name="java-dg-region-selection"></a>

區域可讓您存取 AWS 實際位於特定地理區域的服務。這對於備援以及讓您的資料和應用程式在靠近您和您的使用者存取位置附近執行，都很有用。

## 檢查區域中的服務可用性
<a name="region-selection-query-service"></a>

若要查看特定 AWS 服務 是否可在區域中使用，請在您要使用的區域上使用 `isServiceSupported`方法。

```
Region.getRegion(Regions.US_WEST_2)
    .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX);
```

請參閱您可以指定區域的[區域](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/regions/Regions.html)類別文件，並使用 服務的端點字首進行查詢。每個服務的端點字首都會在服務界面中定義。例如， DynamoDB 端點字首是在 [AmazonDynamoDB](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/dynamodbv2/AmazonDynamoDB.html) 中定義。

## 選擇區域
<a name="region-selection-choose-region"></a>

從 1.4 版開始 適用於 Java 的 AWS SDK，您可以指定區域名稱，開發套件會自動為您選擇適當的端點。若要自行選擇端點，請參閱[選擇特定端點](#region-selection-choose-endpoint)。

若要明確設定區域，建議您使用[區域](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/regions/Regions.html)列舉。這是所有公開可用區域的列舉。若要從列舉建立具有區域的用戶端，請使用下列程式碼。

```
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard()
                    .withRegion(Regions.US_WEST_2)
                    .build();
```

如果您嘗試使用的區域不在`Regions`列舉中，您可以使用代表區域名稱的*字串*來設定區域。

```
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard()
                    .withRegion("{region_api_default}")
                    .build();
```

**注意**  
使用建置器建置用戶端後，這是*不可變的*，而且區域*無法變更*。如果您 AWS 區域 針對相同的服務使用多個 ，您應該建立多個用戶端，每個區域一個。

## 選擇特定端點
<a name="region-selection-choose-endpoint"></a>

每個 AWS 用戶端都可以設定為在建立用戶端時呼叫 `withEndpointConfiguration`方法，以使用區域內*的特定端點*。

例如，若要將 Amazon S3 用戶端設定為使用歐洲 （愛爾蘭） 區域，請使用下列程式碼。

```
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
     .withEndpointConfiguration(new EndpointConfiguration(
          "https://s3.eu-west-1.amazonaws.com",
          "eu-west-1"))
     .withCredentials(CREDENTIALS_PROVIDER)
     .build();
```

如需所有 AWS 服務的目前區域清單及其對應端點，請參閱[區域](https://docs.aws.amazon.com/general/latest/gr/rande.html)和端點。

## 從環境自動判斷區域
<a name="automatically-determine-the-aws-region-from-the-environment"></a>

**重要**  
本節僅適用於使用[用戶端建置器](creating-clients.md)存取 AWS services。使用用戶端建構函數 AWS 建立的用戶端不會自動從環境判斷區域，而是使用*預設* SDK 區域 (USEast1)。

在 Amazon EC2 或 Lambda 上執行時，您可能想要將用戶端設定為使用與程式碼執行所在的相同區域。這會讓您的程式碼與其執行環境分離，也更容易將應用程式部署到多個區域，以降低延遲或提供備援。

 *您必須使用用戶端建置器，讓 SDK 自動偵測您程式碼執行所在的區域。*

若要使用預設的登入資料/區域供應者鏈結來從環境判斷區域，請使用用戶端建置器的 `defaultClient` 方法。

```
AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();
```

這與使用 `standard`後接 相同`build`。

```
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard()
                    .build();
```

如果您未使用 `withRegion`方法明確設定區域，軟體開發套件會諮詢預設區域提供者鏈結，以嘗試並判斷要使用的區域。

### 預設區域供應者鏈結
<a name="default-region-provider-chain"></a>

 **以下是區域查詢程序：**

1. 在建置器本身上使用 `withRegion`或 `setRegion` 設定的任何明確區域優先於任何其他區域。

1. 檢查 `AWS_REGION` 環境變數。如果有設定，會使用該區域來設定用戶端。
**注意**  
此環境變數由 Lambda 容器設定。

1. 軟體開發套件會檢查 AWS 共用組態檔案 （通常位於 `~/.aws/config`)。如果 *region* 屬性存在，開發套件會予以使用。
   + `AWS_CONFIG_FILE` 環境變數可用於自訂共用組態檔的位置。
   + `AWS_PROFILE` 環境變數或`aws.profile`系統屬性可用來自訂 SDK 載入的設定檔。

1. SDK 會嘗試使用 Amazon EC2 執行個體中繼資料服務來判斷目前執行中 Amazon EC2 執行個體的區域。

1. 如果開發套件在這個時候仍找不到區域，用戶端建立會失敗，並出現例外狀況。

開發 AWS 應用程式時，常見的方法是使用*共用組態檔案* （如[使用預設登入資料提供者鏈](credentials.md#credentials-default)中所述） 來設定本機開發的區域，並在 AWS 基礎設施上執行時依賴預設區域提供者鏈來判斷區域。這可大幅簡化用戶端建立並讓您的應用程式保持可攜式。