def lambda_handler()

in src/lambda-inference/app.py [0:0]


def lambda_handler(event, context):
    """
        Lambda Handler for Image Processing logic.
    """

    #Load the event 
    print("My event: {}\n".format(event))
    try:
        event = json.loads(event['body'])
    except:
        event = event['body']
    
    # Content image pre-processing
    input_image = event["image"]  
    content_image_object = Image.open(BytesIO(base64.b64decode(input_image)))
    content_image = load_img(content_image_object)
    content_image = tensor_to_image(content_image)

    #Encode content image scaled to base64 
    buffered = BytesIO()
    content_image.save(buffered, format="JPEG")
    img_str = base64.b64encode(buffered.getvalue())
    event["image"] = img_str.decode("utf-8")
        
    #Read endpoint name from Parameter store
    ssm = boto3.client('ssm')
    endpoint_name = ssm.get_parameter(Name='endpoint_name')
    endpoint_name = endpoint_name['Parameter']['Value']
    print("Using endpoint: {}".format(endpoint_name))
        
    #Invoke endpoint
    sm_runtime = boto3.client('sagemaker-runtime')

    response = sm_runtime.invoke_endpoint(
        EndpointName=endpoint_name,
        Body=json.dumps(event),
        ContentType='application/json',
        Accept='application/json'
    )
    result = json.loads(response['Body'].read())
    
    #Lambda response back to API Gateway
    response = {'headers': {"Content-Type": "image/jpg"},
                'statusCode': 200,
                'body': json.dumps(result),
                'isBase64Encoded': True}
    print(response)
    return response