AWS 區域 選擇 - AWS SDK for Java 1.

我們宣布了即將推 end-of-support 出的 AWS SDK for Java (v1)。我們建議您移轉至 AWS SDK for Java v2。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

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

AWS 區域 選擇

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

檢查區域中的服務可用性

若要查看某個特定地區 AWS 服務 是否有提供,請在您要使用的地區上使用該isServiceSupported方法。

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

請參閱 Region 類別說明文件,瞭解您可以指定的區域,並使用服務的端點前置詞進行查詢。每個服務的端點前綴都在服務界面中定義。例如, DynamoDB 端點前綴在 AmazonDynamoDB 中定義。

選擇區域

從 1.4 版開始 AWS SDK for Java,您可以指定區域名稱,SDK 會自動為您選擇適當的端點。若要自行選擇端點,請參閱選擇特定端點

若要明確設定區,我們建議您使用 Region 列舉。這是所有公開可用區域的列舉。要從枚舉中創建具有區域的客戶端,請使用以下代碼。

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

如果您嘗試使用的區域不在Regions枚舉中,則可以使用代表區域名稱的字符串設置區域。

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

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

選擇特定端點

建立用 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 服務的目前區域清單及其對應端點,請參閱區域和端點。

從環境中自動確定區域

重要

本節僅在使用客戶端構建器訪問 AWS 服務時適用。 AWS 使用客戶端構造函數創建的客戶端不會自動從環境中確定區域,而是使用默認的 SDK 區域(UseAst1)。

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

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

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

AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

這與使用standard後跟的相同build

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

如果您未使用這些withRegion方法明確設定區域,SDK 會諮詢預設的區域提供者鏈結,以嘗試決定要使用的區域。

預設區域供應者鏈結

以下是區域查詢程序:

  1. 通過使用withRegion或構建器本身設置setRegion的任何明確區域都優先於其他任何內容。

  2. 檢查 AWS_REGION 環境變數。如果有設定,會使用該區域來設定用戶端。

    注意

    此環境變數由 Lambda 容器設定。

  3. SDK 會檢查 AWS 共用設定檔案 (通常位於~/.aws/config)。如果 region 屬性存在,開發套件會予以使用。

    • AWS_CONFIG_FILE 環境變數可用於自訂共用組態檔的位置。

    • AWS_PROFILE環境變數或系aws.profile統屬性可用來自訂 SDK 載入的設定檔。

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

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

在開發 AWS 應用程式時,常見的方法是使用共用組態檔案 (如使用預設認證提供者鏈結中所述) 來設定本機開發的區域,並依賴預設的區域提供者鏈來決定在 AWS 基礎結構上執行時的區域。這可大幅簡化用戶端建立並讓您的應用程式保持可攜式。