2016-04-26 58 views
1

我的問題有點類似於這個SO,但我在那裏找不到答案。AWS中的可用區域選擇

我使用下面的代碼片段來創建實例。

代碼:

public void test(String accessId, String accessKey){ 
    credentials = new BasicAWSCredentials(accessId, accessKey); 
    amazonEC2Client = new AmazonEC2Client(credentials); 
    amazonEC2Client.setEndpoint("ec2.ap-northeast-1.amazonaws.com"); 
    RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); 
    runInstancesRequest.withImageId(imageId) 
     .withInstanceType("t2.micro") 
     .withMinCount(2) 
     .withMaxCount(2); 
} 

當我運行上面的代碼中,我得到了下面的錯誤。

We currently do not have sufficient t2.micro capacity in zones with support for'gp2'volumes. 
Our system will be working on provisioning additional capacity. 
(Service: AmazonEC2; Status Code: 500; Error Code: 
InsufficientInstanceCapacity; Request ID: c1996284-c208-446a-9f4c-301d8900e503) 

谷歌搜索後,我發現,AWS沒有在那個時候t2.micro實例的這一數額,並建議創建實例在不同的可用區。

但在代碼中,我沒有提供任何可用區,但實例正在ap-northeast-1a可用區中創建並拋出上述錯誤並終止。

當我通過AWS Web控制檯創建時,它自動在ap-northeast-1c中創建了一個實例,而不會引發任何錯誤。

有沒有什麼辦法可以在該特定區域的任何可用區域中創建一個實例,該實例可以通過編程方式獲得?

我的理解是,當我調用API時,ap-northeast-1區域中沒有或少於t2.micro實例。

是否有任何API可以檢查實例是否在特定區域可用?

+0

@AvinashRaj engha vangha http://chat.stackoverflow.com/rooms/113113/avinash-and-me – The6thSense

回答

1

AWS不提供API來檢查特定區域中的可用實例。

您可以嘗試一個AZ,如果失敗,請嘗試下一個AZ,依此類推。

或者,您可以使用允許在不同AZ中啓動實例的AutoScaling組。它會自動爲你做上述事情。

+0

既然我還沒有給出AZ,它不應該在需要時使用AZ來實例化嗎? – The6thSense

+0

這不是記錄的東西,所以假設它是危險的。我強烈建議你使用AutoScaling進行一些測試:) – mickzer

+0

我同意採取這種假設是危險的。 – The6thSense