Сортировка AMI с запросом в AWS Java SDK - PullRequest
0 голосов
/ 13 июня 2018

Может ли кто-нибудь помочь мне отсортировать амис с последней датой создания?

Примерно так

 aws ec2 describe-images  --filters "Name=name,Values=Ubuntu 16.04 LTS*" "Name=owner-id,Values=715140769385"  --query 'Images[*].[ImageId,CreationDate]'

В настоящее время я использую приведенный ниже код для получения изображений, но не уверен, как сортировать.

    final AmazonEC2 ec2 = getEC2Client();
    DescribeImagesRequest request = new DescribeImagesRequest();
    request.getFilters().add(new Filter().withName("name").withValues("Ubuntu 16.04 LTS service*"));
    DescribeImagesResult result = ec2.describeImages(request);
    for(Image images :result.getImages()){
        System.out.println(images);
    }

Любая помощь?

1 Ответ

0 голосов
/ 13 июня 2018

Я могу сделать это, используя приведенный ниже код.Это немного долго.Я надеялся получить что-то вроде фильтра, чтобы решить эту проблему.

    final AmazonEC2 ec2 = awsClient.getEC2Client();
    DescribeImagesRequest request = new DescribeImagesRequest();
    request.getFilters().add(new Filter().withName("name").withValues("Ubuntu 16.04 LTS service*"));
    DescribeImagesResult result = ec2.describeImages(request);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    Map<Date, String> imagesMap = new TreeMap<Date, String>(new Comparator<Date>() {
        @Override
        public int compare(Date d1, Date d2) {
            return d1.before(d2) ? 1 : -1;
        }
    });

    for (Image images : result.getImages()) {
        try {
            Date date = new Date(sdf.parse(images.getCreationDate()).getTime());
            imagesMap.put(date, images.getImageId());
        } catch (ParseException e) {
            LOG.error("Could not parse date for after fetching AMIs");
        }
    }

    if (imagesMap.size() > 0)
        return imagesMap.values().stream().findFirst().get();
    else
        return null;
...