ValueError:从 S3 存储桶加载 pkl 文件时“嵌入空字节”

Spa*_*eam 5 amazon-s3 python-3.x scikit-learn joblib aws-lambda

我已将训练好的模型从 sklearn 导出到 .pkl 文件中。现在我想从我的 s3 存储桶中读取文件并将其加载到我的 API 中,这样模型的训练就不会在线进行并占用计费执行时间。

def load_model():
    s3 = boto3.resource('s3')

    bucket = 'bucket-name'
    key = 'model.pkl'

    file_obj = s3.Bucket(bucket).Object(key).get()['Body']
    model_str = file_obj.read()

    model = joblib.load(model_str)
    return model
Run Code Online (Sandbox Code Playgroud)

运行代码时返回以下错误结果。

{
  "errorMessage": "embedded null byte",
  "errorType": "ValueError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 10, in lambda_handler\n    
load_model()\n",
    "  File \"/var/task/lambda_function.py\", line 27, in load_model\n    
model = joblib.load(model_str)\n",
"  File \"/opt/python/lib/python3.7/site- 
packages/sklearn/externals/joblib/numpy_pickle.py\", line 590, in load\n    
with open(filename, 'rb') as f:\n"
  ]
}
Run Code Online (Sandbox Code Playgroud)