0

在命令行中运行“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());

      } 
   }

`

4

2 回答 2

1

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

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

于 2018-03-08T14:29:26.200 回答
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());
            });
        });
    });

谢谢, 阿克谢

于 2018-03-21T10:21:26.737 回答