Amazon web services Sagemaker boto3 invoke_endpoint-我不断收到有效负载的类型错误。使用Blazingtext模型端点
让我来阐述这个问题。我已经训练了blazingtext模型并部署了端点。 在我的笔记本实例中,我可以调用model.predict并从端点得到推论。 我现在正在尝试为端点设置lambda和API网关。我在试图找出Invoke\u endpoint(endpoint\u name=mymodel)的负载应该是什么时遇到了问题, 车身=有效载荷) 我不断收到无效的有效负载格式错误 这就是测试lambda时我的Amazon web services Sagemaker boto3 invoke_endpoint-我不断收到有效负载的类型错误。使用Blazingtext模型端点,amazon-web-services,aws-lambda,amazon-sagemaker,Amazon Web Services,Aws Lambda,Amazon Sagemaker,让我来阐述这个问题。我已经训练了blazingtext模型并部署了端点。 在我的笔记本实例中,我可以调用model.predict并从端点得到推论。 我现在正在尝试为端点设置lambda和API网关。我在试图找出Invoke\u endpoint(endpoint\u name=mymodel)的负载应该是什么时遇到了问题, 车身=有效载荷) 我不断收到无效的有效负载格式错误 这就是测试lambda时我的有效负载的样子 {"instances":"string of
有效负载的样子
{"instances":"string of text"}
文件上说,人体接受b'字节或类似文件的对象。我一直在摆弄木卫一,运气不好。对于这个问题,没有好的博客或教程。只有一堆视频在讨论饼干切割机的例子
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["instances"]
print(data)
#print(payload)
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='application/json',
Body=payload.getvalue())
#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 ```
"errorMessage": "An error occurred (ModelError) when calling the InvokeEndpoint operation: Received client error (406) from model with message \"Invalid payload format\"
如果您的有效载荷与您描述的相同,即:
payload = {"instances":"string of text"}
然后,您可以使用以下方法以json字符串的形式获取它:
json.dumps(payload)
# which gives:
'{"instances": "string of text"}'
如果要将其放入bate数组中,则可以执行以下操作:
json.dumps(payload).encode()
# which gives:
b'{"instances": "string of text"}'