调用InvokeEndpoint操作时发生错误(ModelError): Received server error(5



我的sagemaker端点似乎正在工作,而从lambda函数调用,但当我使用相同的有效载荷从api网关rest api (rest api部署在api网关作为任何方法与lambda api集成启用),它给出以下错误

部分lambda函数代码从我调用SageMaker端点

@app.post("/dept_predictor")
@tracer.capture_method
def dept_predictor():
# post_data: dict = app.current_event.json_body
# try:
print("Received event: " + json.dumps( app.current_event.body, indent=2))
payload = app.current_event.body
print(payload)
# raise Exception('Malformed input ...')

response  = runtime_client.invoke_endpoint(EndpointName=ENDPOINT_NAME, 
ContentType='application/json', 
Body=json.dumps(payload),
Accept='Accept')
print(response)

Lambda函数CloudWatch从api网关调用Lambda函数后的日志

[ERROR] ModelError: An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (500) from model with message "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>

SageMaker Endpoint Cloudwatch日志

2023-01-19T00:14:05.961+05:30   Loading the hash vectorizer model ...
2023-01-19T00:14:05.961+05:30   2023-01-18 18:44:05,959 ERROR - sklearn_functions - Exception on /invocations [POST]
2023-01-19T00:14:05.961+05:30   Traceback (most recent call last): File "/miniconda3/lib/python3.7/site-packages/sagemaker_containers/_functions.py", line 93, in wrapper return fn(*args, **kwargs) File "/opt/ml/code/sklearn_functions.py", line 130, in input_fn pname = json.loads(request_body)["product_name"]
2023-01-19T00:14:05.962+05:30   TypeError: string indices must be integers
2023-01-19T00:14:05.962+05:30   During handling of the above exception, another exception occurred:
2023-01-19T00:14:05.962+05:30   Traceback (most recent call last): File "/miniconda3/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app response = self.full_dispatch_request() File "/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request rv = self.handle_user_exception(e) File "/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception reraise(exc_type, exc_value, tb) File "/miniconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request rv = self.dispatch_request() File "/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/miniconda3/lib/python3.7/site-packages/sagemaker_containers/_transformer.py", line 200, in transform self._model, request.content, request.content_type, request.accept File "/miniconda3/lib/python3.7/site-packages/sagemaker_containers/_transformer.py", line 227, in _default_transform_fn data = self._input_fn(content, content_type) File "/miniconda3/lib/python3.7/site-packages/sagemaker_containers/_functions.py", line 95, in wrapper six.reraise(error_class, error_class(e), sys.exc_info()[2]) File "/miniconda3/lib/python3.7/site-packages/six.py", line 702, in reraise raise value.with_traceback(tb) File "/miniconda3/lib/python3.7/site-packages/sagemaker_containers/_functions.py", line 93, in wrapper return fn(*args, **kwargs) File "/opt/ml/code/sklearn_functions.py", line 130, in input_fn pname = json.loads(request_body)["product_name"]
2023-01-19T00:14:05.962+05:30   10.32.0.2 - - [18/Jan/2023:18:44:05 +0000] "POST /invocations HTTP/1.1" 500 290 "-" "AHC/2.0"
2023-01-19T00:14:05.962+05:30   sagemaker_containers._errors.ClientError: string indices must be integers

我试图检查这个类似的GitHub问题尚未解决。任何线索我都非常感谢。谢谢!

找到问题了。当我使用api gate rest api调用时,相同的有效载荷正在传输而不使用lambda api代理集成和任何方法设置为字符串。因此,将字符串有效负载转换为字典有效负载解决了这个问题

payload = json.loads(payload)

相关内容

最新更新