in lambda/shadowDeployment.py [0:0]
def handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
postData = json.loads(json.dumps(event))
print("postData")
print(postData)
payloadIn = postData['body']
print("payloadIn***")
print(payloadIn)
payloadJson = json.loads(payloadIn)
payload = payloadJson['data']
print("payload***")
print(payload)
response1 = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME_V1,
ContentType='text/csv',
Body=payload)
print(response1)
result = json.loads(response1['Body'].read().decode())
print(result)
pred = int(result['predictions'][0]['score'])
predicted_label = 'M' if pred == 1 else 'B'
print("Predicted result- from model version 1", predicted_label)
strPayload = str(payload)
strResult = str(result)
dbResp1 = table.put_item(
Item={
'endpointName': ENDPOINT_NAME_V1,
'request': strPayload,
'response': strResult
}
)
print('dbResp1:', dbResp1)
response2 = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME_V2,
ContentType='text/csv',
Body=payload)
print(response2)
result1 = json.loads(response2['Body'].read().decode())
print(result1)
pred = int(result1['predictions'][0]['score'])
predicted_label1 = 'M' if pred == 1 else 'B'
print("Predicted result- from model version 2", predicted_label1)
strResult1 = str(result1)
dbResp2 = table.put_item(
Item={
'endpointName': ENDPOINT_NAME_V2,
'request': strPayload,
'response': strResult1
}
)
print('dbResp2:', dbResp2)
requestid = response1['ResponseMetadata']['RequestId']
my_json_string = json.dumps(
{'RequestID': requestid, 'Version1 Response': predicted_label, 'Version2 Response': predicted_label1})
bodytext = predicted_label + predicted_label1
filename = "shadowdeployment/" + requestid + ".json"
print("compared prediction result: ", my_json_string)
return {
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": json.dumps({
"result ": result
})
}