2011-09-02 110 views
1

我知道如何使用它的id來停止實例,但每次都很難給出EC2實例id。我怎樣才能停止與Tag Name如何在java中使用標籤名來停止EC2實例?

AmazonEC2 ec2 = new AmazonEC2Client(credentials); 

List<String> instancesToStop = new ArrayList<String>(); 
instancesToStop.add("INSTANCE_ID"); 
StopInstancesRequest stoptr = new StopInstancesRequest();  
stoptr.setInstanceIds(instancesToStop); 
ec2.stopInstances(stoptr); 

實例我如何通過Tag Name停止實例?

回答

2

您可以創建一個幫助方法來獲得相匹配的標籤正在運行的實例:

public List<String> getRunningInstancesByTags(String tagName, String value) { 
    List<String> instances = new ArrayList<String>(); 
    for (Reservation reservation : ec2client.describeInstances().getReservations()) { 
     for (Instance instance : reservation.getInstances()) { 
      if (!instance.getState().getName().equals(InstanceStateName.Running.toString())) { 
       continue; 
      } 
      for (Tag tag : instance.getTags()) { 
       if (tag.getKey().equals(tagName) && tag.getValue().equals(value)) { 
        instances.add(instance.getInstanceId()); 
       } 
      } 
     } 
    } 
    return instances; 
} 

的方法getRunningInstancesByTags只是簡單的只有一個標籤相匹配,可以提高它支持更多的標籤匹配。

相關問題