使用AWS Lambda和API网关部署图像分类算法

时间:2020-06-27 01:03:23

标签: aws-lambda aws-api-gateway amazon-sagemaker

教程链接:https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/

我使用SageMaker训练了自己的SageMaker图像分类算法,并且已经创建了一个端点。我按照上面的教程进行操作,并尝试将其部署在网站上。但是,该示例与我的算法之间的最大区别是我的算法将图像作为输入。因此,我不确定如何相应地配置Lambda函数(如下所示)。有人可以帮我吗?

P.S。另一个后续问题:如何通过发送POST请求在Postman上对其进行测试?我尝试过,但是出现了“无法将请求正文解析为json”错误。

import os
import io
import boto3
import json
import csv

# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')

def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))
    
    data = json.loads(json.dumps(event))
    payload = data['data']
    print(payload)
    
    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                       ContentType='text/csv',
                                       Body=payload)
    print(response)
    result = json.loads(response['Body'].read().decode())
    print(result)
    pred = int(result['predictions'][0]['score'])
    predicted_label = 'M' if pred == 1 else 'B'
    
    return predicted_label

0 个答案:

没有答案