繁体   English   中英

为什么描述Amazon EC2实例不会产生任何结果?

[英]Why might describing Amazon EC2 instances yield no result?

我正在尝试检索在我的AWS账户中运行的所有实例(比如实例ID等)。 我使用以下代码。 我无法打印实例ID。 当我调试时,我只是获取空值。 但我在AWS上运行了三个实例。 谁能指出我在这里做错了什么?

 DescribeInstancesResult result = ec2.describeInstances();

 List<Reservation> reservations = result.getReservations();

 for (Reservation reservation : reservations) {
      List<Instance> instances = reservation.getInstances();

      for (Instance instance : instances) {
           System.out.println(instance.getInstanceId());
      }
 } 

导致此类问题的最常见原因是初始化客户端时缺少区域规范,请参阅创建Amazon EC2客户端中的创建 和初始化Amazon EC2客户端部分获取详细信息:

具体而言,步骤2仅创建EC2客户端而不明确指定区域:

2)使用AWSCredentials对象创建新的AmazonEC2Client实例,如下所示:

 amazonEC2Client = new AmazonEC2Client(credentials); 

这使得客户与us-east-1交谈us-east-1 - 令人惊讶的是, AWS SDKAWS管理控制台使用不同的默认值,即使如步骤3中所述,其中还显示了如何指定不同的端点:

3)默认情况下,服务端点为ec2.us-east-1.amazonaws.com。 要指定其他端点,请使用setEndpoint方法。 例如:

 amazonEC2Client.setEndpoint("ec2.us-west-2.amazonaws.com"); 

如果您未在代码中指定区域,AWS SDK for Java使用US East(N。Virginia)作为默认区域 但是,AWS管理控制台使用US West(Oregon)作为其默认值。 因此,将AWS管理控制台与开发结合使用时,请确保在代码和控制台中指定相同的区域。 [强调我的]

不同的默认值很容易跳过,并且AWS管理控制台中的相应默认值实际上已经随着时间的推移而发生变化 - 在软件开发中经常这样,我建议在代码中始终明确这一点,以避免出现这种微妙的错误来源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM