in src/main/java/com/awslabs/ec2/implementations/BasicEc2Helper.java [26:57]
public Option<Instance> describeInstance() {
if (!isEc2()) {
// No instance ID unless we're on EC2
return Option.none();
}
Option<String> instanceIdOption = Option.of(EC2MetadataUtils.getInstanceInfo().getInstanceId());
if (instanceIdOption.isEmpty()) {
// Can't get the instance ID
return Option.none();
}
String instanceId = instanceIdOption.get();
DescribeInstancesRequest describeInstancesRequest = DescribeInstancesRequest.builder()
.instanceIds(instanceId)
.build();
DescribeInstancesResponse describeInstancesResponse = ec2Client.describeInstances(describeInstancesRequest);
Option<Instance> instanceOption = Option.ofOptional(describeInstancesResponse.reservations().stream()
.flatMap(reservation -> reservation.instances().stream())
.filter(instance -> instance.instanceId().equals(instanceId))
.findFirst());
if (instanceOption.isEmpty()) {
throw new UnsupportedOperationException(String.join("", "Instance ID [", instanceId, "] not found"));
}
return instanceOption;
}