【问题标题】:Availability zone selection in AWSAWS 中的可用区选择
【发布时间】:2016-04-27 06:46:00
【问题描述】:

我的问题与SO 有点相似,但我在那里找不到答案。

我使用下面的代码sn-p来创建实例。

代码:

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);
}

当我运行上面的 sn-p 时,我得到了以下错误。

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 可以检查 Instance 在特定区域是否可用?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 既然我没有给 AZ 不应该拿一个可用实例的 AZ 吗?。
  • 这不是记录在案的东西,因此假设它是危险的。我强烈建议您使用 AutoScaling 进行一些测试 :)
  • 我同意采取这种假设是危险的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 2014-07-23
  • 1970-01-01
相关资源
最近更新 更多