如何在java中使用标签名来停止EC2实例?
问题描述:
我知道如何使用它的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
停止实例?
答
您可以创建一个帮助方法来获得相匹配的标签正在运行的实例:
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只是简单的只有一个标签相匹配,可以提高它支持更多的标签匹配。