This is a simple REST API server that accept an input image and give you URLs of matching images from the S3 bucket by calling Rekognition CompareFaces.
Steps for getting up and running,
-
Install go
-
Clone the repo
git clone https://github.com/khawerrind/go-aws-face-rekognition.git
-
Install project dependencies
cd go-aws-face-rekognition go get ./...
-
Create an IAM role and make sure it has
AmazonS3FullAccess
&AmazonRekognitionFullAccess
. Copy theAccess Key ID
&Secret
and setup environment vairables as described instep # 5
-
Setup required environment variables
export AWS_REGION="us-east-1" export AWS_ACCESS_KEY_ID="Your AWS Access Key ID" export AWS_SECRET_ACCESS_KEY="Your AWS Access Key Secret" export AWS_S3_BUCKET_KEY="Your Bucket Name"
-
Finally start the API
go run main.go
-
Using Postman or any other REST API tool make a POST request to the following endpoint
POST http://localhost:8080/v1/findFaces Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWfPNVh4wuWBlyEyQ ------WebKitFormBoundaryWfPNVh4wuWBlyEyQ Content-Disposition: form-data; name="folder_path" /some/folder/path ------WebKitFormBoundaryWfPNVh4wuWBlyEyQ Content-Disposition: form-data; name="file"; filename="image.png" Content-Type: image/png [file content goes there] ------WebKitFormBoundaryWfPNVh4wuWBlyEyQ
If
folder_path
is provided it will be used as a prefix for ListObjectsInput.SetPrefix -
Sample success response
{ "result": [ "https://test-bucket.s3.amazonaws.com/folder/IMG_1.jpg", "https://test-bucket.s3.amazonaws.com/folder/IMG_2.jpg" ] }
Currently it scans maximum of
100
Objects. Only the images that hasSimilarity >= 90
will be included in the result.
MIT