-
Notifications
You must be signed in to change notification settings - Fork 1
/
employee_registration.py
48 lines (43 loc) · 1.43 KB
/
employee_registration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import boto3
s3 = boto3.client('s3')
rekognition = boto3.client('rekognition', region_name='us-east-1')
dynamodbTableName = 'employee'
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
employeeTable = dynamodb.Table(dynamodbTableName)
def lambda_handler(event, context):
print(event)
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
try:
response = index_employee_image(bucket, key)
print(response)
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
faceID = response['FaceRecords'][0]['Face']['FaceId']
name = key.split('.')[0].split('_')
firstName = name[0]
lastName = name[1]
register_employee(faceID, firstName, lastName)
return response
except Exception as e:
print(e)
print('Error processing employee image {} from bucket {}.'.format(key, bucket))
raise e
def index_employee_image(bucket, key):
response = rekognition.index_faces(
Image={
'S3Object': {
'Bucket': bucket,
'Name': key
}
},
CollectionId="employees"
)
return response
def register_employee(faceID, firstName, lastName):
employeeTable.put_item(
Item={
'rekognitionid': faceID,
'firstName': firstName,
'lastName': lastName
}
)