Я создал веб-приложение для чаши, которое размещается в корзине s3 и вызывает конечную точку xgboost. Я продолжаю получать сообщение об ошибке при вызове модели через веб-приложение. Когда я посмотрел файлы журнала Lambda, я обнаружил, что мой ввод неправильно декодируется. input_text = app.current_request.raw_body.decode()
Какой будет правильный код для декодирования ввода из двоичного файла, чтобы я мог передать обычную строку в мою конечную точку?
Вот ошибка:
botocore.errorfactory.ModelError: Произошла ошибка (ModelError) при вызове операции InvokeEndpoint: клиентская ошибка (415) из модели с сообщением «не удалось преобразовать строку в число с плавающей точкой: user_input = 1%».
Вот мой файл index.html:
<html>
<head></head>
<body>
<form method="post" action="<chalice_deployed_http>">
<input type="text" name="user_input"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Вот мой файл app.py:
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
from io import BytesIO
import csv
import sys, os, base64, datetime, hashlib, hmac
from chalice import Chalice, NotFoundError, BadRequestError
import boto3
app = Chalice(app_name='<name_of_chalice_app>')
app.debug = True
sagemaker = boto3.client('sagemaker-runtime')
@app.route('/', methods=['POST'], content_types=['application/x-www-form-urlencoded'])
def handle_data():
input_text = app.current_request.raw_body.decode()
res = sagemaker.invoke_endpoint(
EndpointName='<endpoint_name>',
Body=input_text,
ContentType='text/csv',
Accept='Accept'
)
return res['Body'].read().decode()[0]
Я должен быть в состоянии передать строку вроде этой:
1,4,26,0.076923077,2,3,1,0.611940299,0.7818181820000001,0.40376569,0.571611506,0.12,12,1,0.0,2,1.0,1,2,6,3,1,1, 1,1,1,3,1,0.000666667,1,1,2,2, -1.0,0.490196078, -1.0,0.633928571,6.0,145,2,2,1,3,2,2,1,3, 2,3,3, -1.0,1,3,1,1,2,1,2,3,1,3,3,1,3,2,3, -1.0,3,3,1,2, 2,1,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,3,0.3497921158934803,0'
и получите вывод, подобный этому:
5 '
Когда я запускаю его в ноутбуке Jupyter, он работает.