List of usage examples for com.amazonaws.services.ec2.model DescribeInstancesResult getNextToken
public String getNextToken()
The token to use to retrieve the next page of results.
From source file:aws.example.ec2.DescribeInstances.java
License:Open Source License
public static void main(String[] args) { final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); boolean done = false; while (!done) { DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResult response = ec2.describeInstances(request); for (Reservation reservation : response.getReservations()) { for (Instance instance : reservation.getInstances()) { System.out.printf( "Found reservation with id %s, " + "AMI %s, " + "type %s, " + "state %s " + "and monitoring state %s", instance.getInstanceId(), instance.getImageId(), instance.getInstanceType(), instance.getState().getName(), instance.getMonitoring().getState()); }/*from ww w .j a va2 s.co m*/ } request.setNextToken(response.getNextToken()); if (response.getNextToken() == null) { done = true; } } }
From source file:com.bodybuilding.turbine.discovery.Ec2TagInstanceDiscovery.java
License:Apache License
private Collection<Instance> getInstancesInternal() { List<Filter> filterList = new ArrayList<>(1); filterList.add(new Filter("tag-key", Lists.newArrayList(CLUSTER_TAG_KEY.get()))); String nextToken = null;/*w w w .j a va 2 s. co m*/ Collection<Instance> instances = new ArrayList<>(); do { DescribeInstancesRequest request = new DescribeInstancesRequest(); request.setFilters(filterList); request.setNextToken(nextToken); DescribeInstancesResult results = ec2Client.describeInstances(request); nextToken = results.getNextToken(); instances.addAll(processReservations(results.getReservations())); } while (!Strings.isNullOrEmpty(nextToken)); return instances; }
From source file:com.cloudera.director.aws.ec2.EC2Provider.java
License:Apache License
/** * Iterates through the instances in the specified {@code DescribeInstancesResult} * and calls the specified handler on each instance. * * @param result the {@code DescribeInstancesResult} * @param instanceHandler the instance handler *///from w w w . j a va 2s . com private void forEachInstance(DescribeInstancesResult result, InstanceHandler instanceHandler) { List<Reservation> reservations; while (!(reservations = result.getReservations()).isEmpty()) { for (Reservation reservation : reservations) { for (Instance instance : reservation.getInstances()) { LOG.debug("Calling instance handler with instance {}", instance); instanceHandler.handle(instance); } } if (result.getNextToken() != null) { result = client .describeInstances(new DescribeInstancesRequest().withNextToken(result.getNextToken())); } else { break; } } }
From source file:com.netflix.spinnaker.clouddriver.aws.agent.ReconcileClassicLinkSecurityGroupsAgent.java
License:Apache License
@Override public void run() { if (!deployDefaults.isReconcileClassicLinkAccount(account)) { return;/*w ww . j a v a2 s . co m*/ } log.info("Checking classic link security groups in {}/{}", account.getName(), region); AmazonEC2 ec2 = amazonClientProvider.getAmazonEC2(account, region, true); List<String> classicLinkVpcIds = ec2.describeVpcClassicLink().getVpcs().stream() .filter(VpcClassicLink::getClassicLinkEnabled).map(VpcClassicLink::getVpcId) .collect(Collectors.toList()); if (classicLinkVpcIds.size() > 1) { log.warn("Multiple classicLinkVpcs found: {}", classicLinkVpcIds); throw new IllegalStateException("More than 1 classicLinkVpc found: " + classicLinkVpcIds); } if (classicLinkVpcIds.isEmpty()) { return; } String classicLinkVpcId = classicLinkVpcIds.get(0); RateLimiter apiRequestRateLimit = RateLimiter.create(5); final Map<String, ClassicLinkInstance> classicLinkInstances = new HashMap<>(); DescribeInstancesRequest describeInstances = new DescribeInstancesRequest().withMaxResults(500); while (true) { apiRequestRateLimit.acquire(); DescribeInstancesResult instanceResult = ec2.describeInstances(describeInstances); instanceResult.getReservations().stream().flatMap(r -> r.getInstances().stream()) .filter(i -> i.getVpcId() == null) .filter(i -> Optional .ofNullable(i.getState()).filter(is -> is.getCode() == RUNNING_STATE).isPresent()) .filter(this::isInstanceOldEnough) .map(i -> new ClassicLinkInstance().withInstanceId(i.getInstanceId()) .withVpcId(classicLinkVpcId).withTags(i.getTags())) .forEach(cli -> classicLinkInstances.put(cli.getInstanceId(), cli)); if (instanceResult.getNextToken() == null) { break; } describeInstances.setNextToken(instanceResult.getNextToken()); } DescribeClassicLinkInstancesRequest request = new DescribeClassicLinkInstancesRequest() .withMaxResults(1000); while (true) { apiRequestRateLimit.acquire(); DescribeClassicLinkInstancesResult result = ec2.describeClassicLinkInstances(request); result.getInstances().forEach(i -> classicLinkInstances.put(i.getInstanceId(), i)); if (result.getNextToken() == null) { break; } request.setNextToken(result.getNextToken()); } log.info("{} existing classic instances in {}/{}", classicLinkInstances.size(), account.getName(), region); Map<String, String> groupNamesToIds = ec2 .describeSecurityGroups(new DescribeSecurityGroupsRequest() .withFilters(new Filter("vpc-id").withValues(classicLinkVpcId))) .getSecurityGroups().stream() .collect(Collectors.toMap(SecurityGroup::getGroupName, SecurityGroup::getGroupId)); reconcileInstances(ec2, groupNamesToIds, classicLinkInstances.values()); }
From source file:com.pinterest.arcee.aws.EC2HostInfoDAOImpl.java
License:Apache License
@Override public Set<String> getTerminatedHosts(Set<String> staleIds) throws Exception { HashSet<String> ids = new HashSet<>(staleIds); HashSet<String> terminatedHosts = new HashSet<>(); while (!ids.isEmpty()) { DescribeInstancesRequest request = new DescribeInstancesRequest(); request.setInstanceIds(ids);/*from ww w . ja v a 2 s .c o m*/ try { do { DescribeInstancesResult results = ec2Client.describeInstances(request); List<Reservation> reservations = results.getReservations(); for (Reservation reservation : reservations) { for (Instance instance : reservation.getInstances()) { int stateCode = instance.getState().getCode(); String id = instance.getInstanceId(); if (stateCode == TERMINATED_CODE || stateCode == STOPPED_CODE) { LOG.info(String.format("Instance %s has already been terminated or stopped.", id)); terminatedHosts.add(id); } ids.remove(id); } } if (results.getNextToken() == null || results.getNextToken().isEmpty()) { break; } request = new DescribeInstancesRequest(); request.setInstanceIds(ids); request.setNextToken(results.getNextToken()); } while (true); LOG.debug("Cannot find the following ids in AWS:", ids); terminatedHosts.addAll(ids); return terminatedHosts; } catch (AmazonServiceException ex) { Collection<String> invalidHostIds = handleInvalidInstanceId(ex); ids.removeAll(invalidHostIds); // add invalid host ids to the terminated host list. terminatedHosts.addAll(invalidHostIds); } catch (AmazonClientException ex) { LOG.error(String.format("Get AmazonClientException, exit with terminiatedHost %s", terminatedHosts.toString()), ex); return terminatedHosts; } } return terminatedHosts; }
From source file:com.pinterest.arcee.aws.EC2HostInfoDAOImpl.java
License:Apache License
@Override public List<String> getRunningInstances(List<String> runningIds) throws Exception { HashSet<String> ids = new HashSet<>(runningIds); ArrayList<String> resultIds = new ArrayList<>(); while (!ids.isEmpty()) { DescribeInstancesRequest request = new DescribeInstancesRequest(); request.setInstanceIds(ids);/*w w w. j av a 2s . co m*/ Filter filter = new Filter("instance-state-code", Arrays.asList(RUNNING_CODE)); request.setFilters(Arrays.asList(filter)); try { do { DescribeInstancesResult results = ec2Client.describeInstances(request); List<Reservation> reservations = results.getReservations(); for (Reservation reservation : reservations) { for (Instance instance : reservation.getInstances()) { resultIds.add(instance.getInstanceId()); } } if (StringUtils.isEmpty(results.getNextToken())) { break; } request = new DescribeInstancesRequest(); request.setNextToken(results.getNextToken()); } while (true); LOG.debug("Cannot find the following ids in AWS:", ids); return resultIds; } catch (AmazonServiceException ex) { // if the error code is not instance not found. return the terminated list we've already got. ids.removeAll(handleInvalidInstanceId(ex)); } catch (AmazonClientException ex) { LOG.error(String.format("Get AmazonClientException, exit with terminiatedHost %s", resultIds.toString()), ex); throw new Exception(String.format("Get AmazonClientException, exit with terminiatedHost %s", resultIds.toString()), ex); } } return resultIds; }
From source file:com.steelbridgelabs.oss.neo4j.cluster.ecs.AutoscalingGroupMembers.java
License:Apache License
public static void main(String[] args) { // check arguments if (args.length == 1) { // create aws ec2 client AmazonEC2 client = AmazonEC2ClientBuilder.defaultClient(); // create request DescribeInstancesRequest request = new DescribeInstancesRequest(); // use instance ids associated to cluster request.withInstanceIds(ec2Instances(args[0])); // next token String token = null;/*from w w w.java 2 s. c om*/ // instance ip addresses List<String> addresses = new ArrayList<>(); do { // set next token request.setNextToken(token); // describe instances DescribeInstancesResult result = client.describeInstances(request); // loop reservations result.getReservations().forEach(reservation -> { // append private ip addresses addresses.addAll(reservation.getInstances().stream().map(Instance::getPrivateIpAddress) .collect(Collectors.toList())); }); // check we have more data to retrieve token = result.getNextToken(); } while (token != null); // dump initial cluster members System.out.print(addresses.stream().map(entry -> entry + ":5000").collect(Collectors.joining(","))); } else { // show information System.err.println("Invalid ECS cluster name: java -jar neo4j-cluster-ecs-tools.jar My-Cluster-Name"); } }
From source file:com.vb.aws.services.compute.ec2.EC2UtilsImpl.java
/** * This method returns all EC2 instances. * @return//from www. j a v a 2s . co m * @throws AmazonClientException */ public List<Instance> getAllInstances() throws AmazonClientException { String marker = null; List<Instance> allInstances = new ArrayList<>(); try { while (true) { DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest(); describeInstancesRequest.setNextToken(marker); DescribeInstancesResult describeInstancesResult = this.amazonEc2 .describeInstances(describeInstancesRequest); List<Reservation> reservations = describeInstancesResult.getReservations(); for (Reservation reservation : reservations) { allInstances.addAll(reservation.getInstances()); } marker = describeInstancesResult.getNextToken(); if (marker == null) { break; } } } catch (AmazonClientException e) { System.out.println("ERROR : Fetching all EC2 instances."); e.printStackTrace(); throw e; } System.out.println("INFO : Number of EC2 instances : " + allInstances.size()); List<String> instancesId = allInstances.stream().map(e -> e.getInstanceId()).collect(Collectors.toList()); System.out.println("INFO : EC2 Instances : " + instancesId); return allInstances; }
From source file:ec2.DescribeInstances.java
License:Open Source License
public static void main(String[] args) { final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); boolean done = false; while (!done) { DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResult response = ec2.describeInstances(request); for (Reservation reservation : response.getReservations()) { for (Instance instance : reservation.getInstances()) { System.out.printf( "Found reservation with id %s, AMI %s, type %s, state %s and monitoring state %s", instance.getInstanceId(), instance.getImageId(), instance.getInstanceType(), instance.getState().getName(), instance.getMonitoring().getState()); }//w w w. j a va 2s . c o m } request.setNextToken(response.getNextToken()); if (response.getNextToken() == null) { done = true; } } }
From source file:io.macgyver.plugin.cloud.aws.scanner.EC2InstanceScanner.java
License:Apache License
private void forEachInstance(Region region, Consumer<Instance> consumer) { AmazonEC2Client client = getAWSServiceClient().createEC2Client(region); DescribeInstancesResult results = client.describeInstances(new DescribeInstancesRequest()); String token = results.getNextToken(); results.getReservations().forEach(reservation -> { reservation.getInstances().forEach(consumer); });//from w w w . jav a 2s .c o m while (!Strings.isNullOrEmpty(token) && !token.equals("null")) { results = client.describeInstances(new DescribeInstancesRequest().withNextToken(token)); token = results.getNextToken(); results.getReservations().forEach(reservation -> { reservation.getInstances().forEach(consumer); }); } }