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