Example usage for com.amazonaws.services.ec2.model DescribeInstancesRequest setNextToken

List of usage examples for com.amazonaws.services.ec2.model DescribeInstancesRequest setNextToken

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2.model DescribeInstancesRequest setNextToken.

Prototype


public void setNextToken(String nextToken) 

Source Link

Document

The token to request the next page of results.

Usage

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());
            }// w  w  w  .jav a2 s  . c  o 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;//from  www .j  a v a2 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.netflix.spinnaker.clouddriver.aws.agent.ReconcileClassicLinkSecurityGroupsAgent.java

License:Apache License

@Override
public void run() {
    if (!deployDefaults.isReconcileClassicLinkAccount(account)) {
        return;/* www.ja va  2s . c  o 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);/*ww  w . j  a  v a2s. c  om*/
        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  a  va  2  s.  com
        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;// ww  w. j a v  a 2s.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//  w w w  .  j ava2 s. c o 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:com.vmware.photon.controller.model.adapters.awsadapter.enumeration.AWSEnumerationAndCreationAdapterService.java

License:Open Source License

/**
 * Initializes and saves a reference to the request object that is sent to AWS to get a page of instances. Also saves an instance
 * to the async handler that will be used to handle the responses received from AWS. It sets the nextToken value in the request
 * object sent to AWS for getting the next page of results from AWS.
 * @param aws//from   w  w  w  .  ja  v  a2  s .com
 */
private void creatAWSRequestAndAsyncHandler(EnumerationCreationContext aws) {
    DescribeInstancesRequest request = new DescribeInstancesRequest();
    Filter runningInstanceFilter = getAWSNonTerminatedInstancesFilter();
    request.getFilters().add(runningInstanceFilter);
    request.setMaxResults(getQueryPageSize());
    request.setNextToken(aws.nextToken);
    aws.describeInstancesRequest = request;
    AsyncHandler<DescribeInstancesRequest, DescribeInstancesResult> resultHandler = new AWSEnumerationAsyncHandler(
            this, aws);
    aws.resultHandler = resultHandler;
}

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());
            }/*from  w ww  . jav  a  2 s .  c om*/
        }

        request.setNextToken(response.getNextToken());

        if (response.getNextToken() == null) {
            done = true;
        }
    }
}

From source file:org.lendingclub.mercator.aws.EC2InstanceScanner.java

License:Apache License

public void scanInstanceId(String... instanceIdList) {

    Arrays.asList(instanceIdList).forEach(instanceId -> {

        String token = null;//from www . j a  va2s  .c  o  m
        DescribeInstancesRequest request = new DescribeInstancesRequest().withInstanceIds(instanceId);

        do {
            DescribeInstancesResult results = getClient().describeInstances();
            results.getReservations().forEach(reservation -> {
                reservation.getInstances().forEach(instance -> {
                    try {
                        writeInstance(instance);
                    } catch (RuntimeException e) {
                        maybeThrow(e);
                    }
                });
            });
            request.setNextToken(results.getNextToken());
        } while (tokenHasNext(token));
    });
}