in java-app-backend/BackendFunction/src/main/java/com/webapp/function/IndexImageHandler.java [41:71]
public IndexFacesResponse handleRequest(S3EventNotification input, Context context) {
String bucketName = input.getRecords().get(0).getS3().getBucket().getName();
String bucketKey = input.getRecords().get(0).getS3().getObject().getUrlDecodedKey();
try {
IndexFacesResponse indexFacesResponse = indexFaces(bucketName, bucketKey);
LOG.debug("Response from service after indexing {}", indexFacesResponse);
if (indexFacesResponse.sdkHttpResponse().isSuccessful()) {
String faceId = indexFacesResponse.faceRecords().get(0).face().faceId();
HeadObjectResponse headObjectResponse = s3Client.headObject(HeadObjectRequest.builder()
.bucket(bucketName)
.key(bucketKey)
.build());
String fullname = headObjectResponse.metadata().getOrDefault("fullname", "");
putMetadata("full_name", fullname);
putAnnotation("full_name", fullname);
updateIndexDetails(faceId, fullname);
}
return indexFacesResponse;
} catch (Exception e) {
LOG.error("Failed indexing uploaded image from bucket {} with key {}", bucketName, bucketKey, e);
throw e;
}
}