def lambda_handler()

in 02-increment-train/invoke_endpoint_a2i/lambda_function.py [0:0]


def lambda_handler(event, context):
    body = event["content"]
    payload = base64.b64decode(body)
    runtime_client = boto3.client('runtime.sagemaker')
    response = runtime_client.invoke_endpoint(EndpointName=ENDPOINT_NAME, 
                                  ContentType='application/octet-stream', 
                                  Body=payload)
    
    result = response['Body'].read().decode('utf-8')
    print(result)
    prob = object_with_max_prob(json.loads(result))
    
    if prob < 1: 
        task = str(uuid.uuid4())
        file_name = "{}.wav".format(task) 
                    
        s3_client.put_object(Body=payload, Bucket=BUCKET, Key="{}/{}".format(KEY,file_name))
        s3_filename = "s3://{}/{}/{}".format(BUCKET, KEY, file_name)                    
        inputContent = {
            "initialValue": prob,
            "taskObject": s3_filename # the s3 object will be passed to the worker task UI to render
        }
        # start an a2i human review loop with an input
        flowDefinitionArn = A2IFLOW_DEF                   
        try: 
            start_loop_response = a2i.start_human_loop(
                HumanLoopName=task,
                FlowDefinitionArn=flowDefinitionArn,
                HumanLoopInput={
                    "InputContent": json.dumps(inputContent)
                }
            )
            a2i_arn = start_loop_response['HumanLoopArn'].split('/')[-1]
        except:
            traceback.print_exc()

        # https://forums.aws.amazon.com/thread.jspa?messageID=961211&tstart=0    
    return json.loads(result)