設定 AWS 區域 的 AWS SDK for Java 2.x - AWS SDK for Java 2.x

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

設定 AWS 區域 的 AWS SDK for Java 2.x

SDK 用戶端會連接至 AWS 區域 您在建立用戶端時所指定之特定 AWS 服務 中的 。此組態可讓您的應用程式與該 AWS 地理區域的資源互動。當您在不明確設定區域的情況下建立服務用戶端時,軟體開發套件會使用外部組態中的預設區域。

明確設定 AWS 區域

若要明確設定區域,建議您使用區域類別中定義的常數。這是所有公開可用區域的列舉。

若要從 類別建立具有列舉區域的用戶端,請使用用戶端建置器的 region方法。

Ec2Client ec2 = Ec2Client.builder() .region(Region.US_WEST_2) .build();

如果您想要使用的 區域不是 Region類別中的其中一個列舉,您可以使用靜態of方法建立新區域。此方法可讓您存取新區域,而無需升級 SDK。

Region newRegion = Region.of("us-east-42"); Ec2Client ec2 = Ec2Client.builder() .region(newRegion) .build();
注意

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

讓 SDK AWS 區域 自動判斷環境中的預設值

當您的程式碼在 Amazon EC2 或 上執行時 AWS Lambda,建議您將用戶端設定為使用與執行程式碼 AWS 區域 相同的 。這會將程式碼與執行環境分離,讓您更輕鬆地將應用程式部署到多個 , AWS 區域 以降低延遲或備援。

若要使用預設 AWS 區域 提供者鏈從環境判斷區域,請使用用戶端建置器的 create方法。

Ec2Client ec2 = Ec2Client.create();

您也可以以其他方式設定用戶端,但無法設定區域。SDK AWS 區域 會使用預設區域提供者鏈結來挑選 :

Ec2Client ec2Client = Ec2Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("my-profile") .build()) .build();

如果您沒有使用 AWS 區域 region方法明確設定 ,則 SDK 會諮詢預設區域提供者鏈結,以決定要使用的區域。

了解預設 AWS 區域 供應商鏈結

開發套件會採取下列步驟來尋找 AWS 區域:

  1. 在建置器本身上使用 region方法設定的任何明確區域優先於任何其他區域。

  2. 軟體開發套件會尋找 JVM 系統屬性,並在找到aws.region時使用其值。

  3. 檢查 AWS_REGION 環境變數。如果已設定,則該區域會用來設定用戶端。

    注意

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

  4. SDK 會檢查AWS 共用組態和登入資料檔案中的作用中設定檔。如果 region 屬性存在,則 SDK 會使用它。

    除非被AWS_PROFILE環境變數或 aws.profile JVM 系統屬性覆寫,否則default設定檔是作用中的設定檔。如果 SDK 在相同描述檔 (包括default描述檔) 的兩個檔案中找到 region 屬性,則 SDK 會使用共用登入資料檔案中的值。

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

  6. 如果 SDK 目前仍未找到區域,則用戶端建立會失敗,但有例外狀況。

開發 AWS 應用程式時,常見的方法是使用共用組態檔案來設定區域以進行本機開發,並依賴預設區域提供者鏈來判斷應用程式在 AWS 基礎設施上執行時的區域。這可大幅簡化用戶端建立並讓您的應用程式保持可攜式。

檢查 區域中是否有可用的服務

若要查看特定 AWS 服務 是否可在區域中使用,請在服務用戶端上使用靜態serviceMetadata方法:

DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);

先前的程式碼片段會列印 AWS 區域 出具有 DynamoDB 服務的長代碼清單:

af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ...

您可以使用程式碼來查詢您需要服務用戶端使用之區域的 區域類別列舉

例如,如果您想要在 區域中使用代碼為 的 DynamoDBap-northeast-2,請建立至少具有下列組態的 DynamoDB 用戶端:

DynamoDbClient ddb = DynamoDbClient.builder() .region(Region.AP_NORTHEAST_2) .build();

選擇特定端點

在某些情況下,例如在功能正式推出到一般可用性之前測試服務的預覽功能,您可能需要在區域中指定特定端點。在這些情況下,可以透過呼叫 endpointOverride方法來設定服務用戶端。

例如,若要將 Amazon EC2 用戶端設定為搭配特定端點使用歐洲 (愛爾蘭) 區域,請使用下列程式碼。

Ec2Client ec2 = Ec2Client.builder() .region(Region.EU_WEST_1) .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com")) .build();

如需所有 AWS 服務的目前區域清單及其對應端點,請參閱區域和端點。