Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在AWS SDK Java中轮询?_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Amazon web services 如何在AWS SDK Java中轮询?

Amazon web services 如何在AWS SDK Java中轮询?,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我是AWS sdk java新手。我试图编写一个代码,通过它我想要控制实例并获得所有AWSEC2信息。 我可以启动一个实例,也可以停止它。但大家都必须知道,启动一个实例需要一些时间,所以我想在那里等待(不想使用Thread.sleep),直到它启动,或者当我停止一个实例时,它应该在那里等待,直到我进入下一步。 代码如下: AmazonEC2 ec2 = = new AmazonEC2Client(credentialsProvider); DescribeInstancesResu

我是AWS sdk java新手。我试图编写一个代码,通过它我想要控制实例并获得所有AWSEC2信息。 我可以启动一个实例,也可以停止它。但大家都必须知道,启动一个实例需要一些时间,所以我想在那里等待(不想使用Thread.sleep),直到它启动,或者当我停止一个实例时,它应该在那里等待,直到我进入下一步。 代码如下:

   AmazonEC2 ec2 = = new AmazonEC2Client(credentialsProvider);

   DescribeInstancesResult describeInstancesRequest = ec2.describeInstances();
   List<Reservation> reservations = describeInstancesRequest.getReservations();
   Set<Instance> instances = new HashSet<Instance>();

   for (Reservation reservation : reservations) {
     instances.addAll(reservation.getInstances());
   }

   for (Instance instance : instances) {
   if ((instance.getInstanceId().equals("myimage"))) {
         List<String> instancesToStart = new ArrayList<String>();
         instancesToStart.add(instance.getInstanceId());
         StartInstancesRequest startr = new StartInstancesRequest();
         startr.setInstanceIds(instancesToStart);
         ec2.startInstances(startr);
         Thread.currentThread().sleep(60*1000);
 }

  if ((instat.getName()).equals("running")) {
         List<String> instancesToStop = new ArrayList<String>();

         instancesToStop.add(instance.getInstanceId());
         StopInstancesRequest stoptr = new StopInstancesRequest();
         stoptr.setInstanceIds(instancesToStop);
         ec2.stopInstances(stoptr);
  }

每次希望看到具有相同“实例Id”的更新状态时,都可以获得类“实例”的实例

我认为这里的关键是保存您关心的实例的“实例id”

Python中的boto有一个很好的方法
instance.update()
,可以在实例上调用它,您可以看到它的状态,但我在Java中找不到它

希望这有帮助

   DescribeImagesResult describeImagesResult = ec2.describeImages();
Instance instance = new Instance(<your instance id that you got previously from describe instances>);
InstanceStatus instat = instance.getStatus();