@Override public DescribeImagesResult describeImages() { return describeImages(new DescribeImagesRequest()); }
/** * <p> * Describes one or more of the images (AMIs, AKIs, and ARIs) available * to you. Images available to you include public images, private images * that you own, and private images owned by other AWS accounts but for * which you have explicit launch permissions. * </p> * <p> * <b>NOTE:</b> Deregistered images are included in the returned results * for an unspecified interval after deregistration. * </p> * * @return The response from the DescribeImages service method, as * returned by AmazonEC2. * * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonEC2 indicating * either a problem with the data in the request, or a server side issue. */ public DescribeImagesResult describeImages() throws AmazonServiceException, AmazonClientException { return describeImages(new DescribeImagesRequest()); }
@Override public DescribeImagesResult describeImages() { return describeImages(new DescribeImagesRequest()); }
@Override public List<Image> getImages() { return client.describeImages().getImages(); }
private Optional<Image> getAmiFromEC2Api(final AmazonEC2Client ec2Client, final String imageId) { try { final DescribeImagesResult response = ec2Client.describeImages(new DescribeImagesRequest().withImageIds(imageId)); return ofNullable(response) .map(DescribeImagesResult::getImages) .map(List::stream) .flatMap(Stream::findFirst); } catch (final AmazonClientException e) { log.warn("Could not describe image " + imageId, e); return empty(); } } }
private Optional<Image> getAmi(@Nonnull final EC2InstanceContext context) { final Optional<String> amiId = context.getAmiId(); try { return amiId .map(id -> context .getClient(AmazonEC2Client.class) .describeImages(new DescribeImagesRequest().withImageIds(id))) .map(DescribeImagesResult::getImages) .flatMap(images -> images.stream().findFirst()); } catch (final AmazonClientException e) { log.warn("Could not get AMI of: " + amiId.get(), e); return empty(); } }
public Image getAmi(String ami) { checkNotBlank(ami, "ami"); DescribeImagesRequest request = new DescribeImagesRequest(); request.setImageIds(singletonList(ami)); DescribeImagesResult result = client.describeImages(request); List<Image> images = result.getImages(); checkState(images.size() == 1, "Expected exactly 1 image but there were %s instead", images.size()); return images.get(0); }
@Override public Image getImage(String imageId) { DescribeImagesRequest request = new DescribeImagesRequest(); request.setImageIds(singletonList(imageId)); DescribeImagesResult result = client.describeImages(request); List<Image> images = result.getImages(); checkSizeEquals(images, 1); return images.get(0); }
@Override public List<Image> getMyImages() { DescribeImagesRequest request = new DescribeImagesRequest(); request.withOwners(AmiOwner.SELF.getValue()); DescribeImagesResult result = client.describeImages(request); return result.getImages(); }
@Override protected void doScan() { AmazonEC2Client c = getClient(); NeoRxClient neoRx = getNeoRxClient(); Preconditions.checkNotNull(neoRx); GraphNodeGarbageCollector gc = newGarbageCollector().bindScannerContext(); DescribeImagesRequest req = new DescribeImagesRequest().withOwners("self"); DescribeImagesResult result = c.describeImages(req); rateLimit(); result.getImages().forEach(i -> { try { ObjectNode n = convertAwsObject(i, getRegion()); String cypher = "merge (x:AwsAmi {aws_arn:{aws_arn}}) set x+={props} set x.updateTs=timestamp() return x"; neoRx.execCypher(cypher, "aws_arn", n.path("aws_arn").asText(), "props",n).forEach( r->{ gc.MERGE_ACTION.accept(r); getShadowAttributeRemover().removeTagAttributes("AwsAmi", n, r); }); incrementEntityCount(); } catch (RuntimeException e) { maybeThrow(e,"problem scanning AMI "+i.getImageId()); } }); }