本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 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 區域:
-
在建置器本身上使用
region
方法設定的任何明確區域優先於任何其他區域。 -
軟體開發套件會尋找 JVM 系統屬性,並在找到
aws.region
時使用其值。 -
檢查
AWS_REGION
環境變數。如果已設定,則該區域會用來設定用戶端。注意
Lambda 容器會設定此環境變數。
-
SDK 會檢查AWS 共用組態和登入資料檔案中的作用中設定檔。如果
region
屬性存在,則 SDK 會使用它。除非被
AWS_PROFILE
環境變數或aws.profile
JVM 系統屬性覆寫,否則default
設定檔是作用中的設定檔。如果 SDK 在相同描述檔 (包括default
描述檔) 的兩個檔案中找到region
屬性,則 SDK 會使用共用登入資料檔案中的值。 -
SDK 會嘗試使用 Amazon EC2 執行個體中繼資料服務 (IMDS) 來判斷目前執行 Amazon EC2 中執行個體的區域。
-
為了提高安全性,您應該停用 SDK 以嘗試使用 IMDS 第 1 版。您可以使用相同的設定來停用第 1 版,如 安全地取得 IAM 角色登入資料節所述。
-
-
如果 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 服務的目前區域清單及其對應端點,請參閱區域和端點。