def lambda_handler()

in source/backend/index-face-lambda/function.py [0:0]


def lambda_handler(event, context):
    logger.info('Invoked the IndexFace Lambda function.')
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    name = os.path.splitext(os.path.basename(key))[0]

    # Register a face image to Rekognition
    logger.info('Register a face image to Rekognition.')
    response = rekognition.index_faces(
        Image={
            "S3Object": {
                "Bucket": bucket,
                "Name": key
            }
        },
        CollectionId=COLLECTION_NAME
    )

    if response['ResponseMetadata']['HTTPStatusCode'] != 200 or len(response['FaceRecords']) == 0:
        raise RuntimeError('Fail to register a face to Rekognition.')

    faceId = response['FaceRecords'][0]['Face']['FaceId']

    # Insert the face data to DynamoDB
    logger.info('Insert the face ID to the DynamoDB table.')
    try:
        response = dynamodb.put_item(
            TableName=DYNAMODB_TABLE_NAME,
            Item={
                'RekognitionId': {'S': faceId},
                'Name': {'S': name},
            }
        )
    except ClientError as err:
        rekognition.delete_faces(
            CollectionId=COLLECTION_NAME,
            FaceId=faceId
        )
        raise err

    # If the face image was registered successfully, delete the image from s3.
    s3.delete_object(Bucket=bucket, Key=key)
    logger.info('Registered a face image successfully.')