in TerraformCustomResourceHandler/src/main/java/com/amazon/servicecatalog/terraform/customresource/facades/Ec2Facade.java [41:66]
public String getInstanceId(Tag instanceTag) {
Filter tagFilter = new Filter("tag:" + instanceTag.getKey(), ImmutableList.of(instanceTag.getValue()));
DescribeInstancesRequest request = new DescribeInstancesRequest().withFilters(tagFilter, RUNNING_INSTANCE_FILTER);
DescribeInstancesResult result = ec2.describeInstances(request);
List<String> instanceIds;
if (result.getReservations() != null) {
instanceIds = result.getReservations().stream()
.flatMap(reservation -> reservation.getInstances().stream())
.map(Instance::getInstanceId)
.collect(ImmutableList.toImmutableList());
} else {
instanceIds = ImmutableList.of();
}
if (instanceIds.isEmpty()) {
String message = String.format(
"Invalid FulfillmentConfig. No instances found with TagKey: %s and TagValue: %s",
instanceTag.getKey(),
instanceTag.getValue());
throw new RuntimeException(message);
}
int randomIndex = randomGenerator.nextInt(instanceIds.size());
return instanceIds.get(randomIndex);
}