def lambda_handler()

in static/code/worker-safety/cloud-lambda.py [0:0]


def lambda_handler(event, context):

    bucketName = event['Records'][0]['s3']['bucket']['name']
    imageName = event['Records'][0]['s3']['object']['key']
    scaleFactor = 4
    imageWidth = 2688/scaleFactor
    imageHeight = 1520/scaleFactor

    personsWithHats, personsWithoutHats, hatsWihoutPerson = detectWorkerSafety(bucketName, imageName, imageWidth, imageHeight)

    personsWithHatsCount = len(personsWithHats)
    personsWithoutHatsCount = len(personsWithoutHats)
    hatsWihoutPersonCount = len(hatsWihoutPerson)

    pushToCloudWatch('PersonsWithSafetyHat', personsWithHatsCount)
    pushToCloudWatch('PersonsWithoutSafetyHat', personsWithoutHatsCount)

    outputMessage = "Person(s): {}".format(personsWithHatsCount+personsWithoutHatsCount)
    outputMessage = outputMessage + "\nPerson(s) With Safety Hat: {}\nPerson(s) Without Safety Hat: {}".format(personsWithHatsCount, personsWithoutHatsCount)
    print(outputMessage)

    #imageUrl = "https://s3.amazonaws.com/{}/{}".format(bucketName, imageName)
    s3_client = boto3.client('s3')
    imageUrl = s3_client.generate_presigned_url('get_object', Params={'Bucket': bucketName, 'Key': imageName })
    iotMessage = {'ImageUrl' :imageUrl, 'PersonsWithHat' : personsWithHats, 'PersonsWithoutHat' : personsWithoutHats, 'Message' : outputMessage}

    sendMessageToIoTTopic(iotMessage)

    return {
        'statusCode': 200,
        'body': json.dumps(outputMessage)
    }