Lambda 调用 SageMaker Endpoint,例子如下代码:
lambda_function.py
from sagemaker.predictor import RealTimePredictor
import numpy as np
from sagemaker.predictor import csv_serializer, json_deserializer
from sagemaker.content_types import CONTENT_TYPE_CSV
def lambda_handler(event, context):
pd = RealTimePredictor(endpoint='mme-xgboost-myself2')
pd.serializer = csv_serializer
pd.deserializer = json_deserializer
pd.content_type = CONTENT_TYPE_CSV
pd.accept = CONTENT_TYPE_CSV
data = np.array([0.08517875, 0.76152937])
res = pd.predict(data=data, target_model='SHA.tar.gz')
return res
之后,将代码加进压缩包
zip -g function.zip lambda_function.py
之后,安装sagemaker和numpy库
pip install --target ./package sagemaker numpy
cd package
zip -r9 ../function.zip .
由于代码体积过大,无法直接在本地更新lambda,所以先上传到s3,之后再用s3更新
aws s3 cp function.zip s3://<s3-bucket-name>/<路径名>/
最后,更新Lambda函数
aws lambda update-function-code --function-name <lambda-function-name> --region <region-name> --s3-bucket <s3-bucket-name> --s3-key <路径名>/function.zip