· 5 years ago · May 29, 2020, 09:40 AM
1from __future__ import print_function
2
3import boto3
4from decimal import Decimal
5import json
6import urllib
7
8print('Loading function')
9
10rekognition = boto3.client('rekognition')
11
12def detect_faces(bucket, key):
13 response = rekognition.detect_faces(Image={"S3Object": {"Bucket": bucket, "Name": key}})
14 return response
15
16def lambda_handler(event, context):
17
18 def publish_message_to_queue(message):
19 queue = 'releasethedrone'
20 sqs = boto3.client('sqs')
21 queue_url = (sqs.get_queue_url(QueueName=queue))['QueueUrl']
22 response = sqs.send_message(QueueUrl=queue_url,MessageBody=message)
23
24 if response['ResponseMetadata']['HTTPStatusCode'] != 200:
25 raise Exception('Non200Response: A non-200 http response was received.')
26
27 bucket = event['Records'][0]['s3']['bucket']['name']
28 key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key'].encode('utf8'))
29 try:
30 # Calls rekognition DetectFaces API to detect faces in S3 object
31 response = detect_faces(bucket, key)
32
33 print(response)
34 if response['Confidence'] > 80:
35 publish_message_to_queue(face)
36 return response
37 except Exception as e:
38 print(e)
39 print("Error processing object {} from bucket {}. ".format(key, bucket) +
40 "Make sure your object and bucket exist and your bucket is in the same region as this function.")
41 raise e