AmazonEC2Client describeInstances()在Java中返回零预留

时间:2018-03-08 13:28:15

标签: java amazon-web-services amazon-ec2 core ec2-api-tools

运行" aws ec2 describe-instances"在命令行中,它提供了所有ec2实例的列表,但是使用Java AWS-SDK,它给出了零预留。请参阅下面的代码段,

 AmazonEC2 ec2;
 if (ec2 == null) {
    AWSCredentialsProviderChain credentialsProvider = new 
    AWSCredentialsProviderChain(
        new InstanceProfileCredentialsProvider(),
        new ProfileCredentialsProvider("default"));

      ec2 = new AmazonEC2Client(credentialsProvider);
  }

 for (Reservation reservation : ec2.describeInstances().getReservations()) {
         for (Instance instance : reservation.getInstances()) {
                System.out.println("TAG" + instance.getInstanceId());

      } 
   }

`

2 个答案:

答案 0 :(得分:1)

最可能的原因是它没有找到正确的区域。

另一种可能性是它引发了一个你不会看到的异常。要验证不是这种情况,您需要插入一些日志记录语句。至少是for循环之前和之后的一个。

答案 1 :(得分:0)

这是Java 8中的代码,我用它来描述来自所有区域的所有实例:

    amazonEC2.describeRegions().getRegions().forEach(region -> {
        System.out.println("Region : " + region.getRegionName());

        amazonEC2 = AmazonEC2ClientBuilder.standard().withCredentials(awsprovider).withRegion(region.getRegionName()).build();

        amazonEC2.describeInstances().getReservations().forEach(reservation -> {
            reservation.getInstances().forEach(instance -> {
                System.out.println(instance.getInstanceId());
            });
        });
    });

谢谢, 阿克沙伊