AWS中的可用区选择

时间:2016-04-26 10:25:48

标签: java amazon-web-services amazon-ec2

我的问题有点类似于SO,但我找不到答案。

我使用以下代码段创建实例。

代码:

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是否在特定区域提供了实例?

1 个答案:

答案 0 :(得分:1)

AWS不提供API来检查特定区域中的可用实例。

您可以尝试使用一个AZ,如果失败则尝试下一个AZ,依此类推。

或者,您可以使用允许在不同AZ中启动实例的AutoScaling组。它将自动为您执行上述操作。