amazon-web-services - Sagemaker boto3 invoke_endpoint - 我不断收到有效载荷的类型错误。使用 Blazingtext 模型端点

标签 amazon-web-services aws-lambda amazon-sagemaker

让我来构想这个问题。我训练了一个 blazingtext 模型并部署了一个端点。 在我的 Notebook 实例中,我可以调用 model.predict 并从端点获取推论。 我现在正在尝试为端点设置一个 lambda 和一个 API 网关。我无法弄清楚 Invoke_endpoint(endpoint_name = mymodel, body = 有效载荷)

我不断收到无效的负载格式错误

这是测试 lambda 时我的payload 的样子

{"instances":"string of text"}

文档说主体采用 b'bytes 或文件之类的对象。我没有运气就修补了 IO。没有针对此特定问题的好的博客或教程。只有一堆视频介绍了现有的千篇一律的示例。

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"}'

关于amazon-web-services - Sagemaker boto3 invoke_endpoint - 我不断收到有效载荷的类型错误。使用 Blazingtext 模型端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62508695/

相关文章:

amazon-web-services - CloudFormation 部署不关联第二个 CloudFront 函数

amazon-s3 - 如何从cloudformation/boto3访问S3 Bucket的名称?

python - 我们可以在调用时设置 AWS python lambda 的环境变量吗

amazon-web-services - 当我将数据上传到 Sagemaker Notebook 实例时,数据位于哪个目录中以及如何访问它?

amazon-web-services - GPU 上的 AWS SageMaker

mysql - 我应该只坚持使用 AWS RDS 自动备份还是数据库快照?

amazon-web-services - "start a build under these conditions"的 AWS CodeBuild CloudFormation YAML Webhook 事件

python - boto3 s3 api 失败, "(NoSuchBucketPolicy) when calling the GetBucketPolicyStatus operation"

postgresql - AWS Lambda 导入 psycopg2 - 无法导入模块 'app' : No module named 'psycopg2. _psycopg

c# - AWS sagemaker invokeEndpoint 模型内部错误