java - AWS 中的可用区选择

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

最佳答案

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

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

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

关于java - AWS 中的可用区选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862202/

相关文章:

java - 如何检查我从游标返回的字符串在 Android 游标中是否为空或 null?

java - Hibernate 单表中复合外键和主键的一对一映射

java - 如何将响应字符串转换为json对象

java - 生成用于上传到 s3 的 AWS Signature v4 签名(从 v2 迁移)

amazon-web-services - S3AbortableInputStream : Not all bytes were read from the S3ObjectInputStream, 中止 HTTP 连接。仅读取 ObjectMetadata 时发出警告

powershell - 无法访问 AWS 上的 ElasticSearch

java - 只有一个 JTextField 会输出或显示在框架上

git - Elastic Beanstalk、Git 和 AWS 工具 : How to clone repository to another workstation

java - 我无法在 Java 中设置 -Xmx

angular - 无法访问在 ubuntu 服务器上的端口上运行的项目