Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用AWS Lambda调用在sagemaker中创建的XG Boost端点_Python_Amazon Web Services_Machine Learning_Aws Lambda_Amazon Sagemaker - Fatal编程技术网

Python 无法使用AWS Lambda调用在sagemaker中创建的XG Boost端点

Python 无法使用AWS Lambda调用在sagemaker中创建的XG Boost端点,python,amazon-web-services,machine-learning,aws-lambda,amazon-sagemaker,Python,Amazon Web Services,Machine Learning,Aws Lambda,Amazon Sagemaker,我在AWS Sagemaker上训练了一个xgboost模型,并创建了一个端点。现在我想使用AWS Lambda和AWS API调用端点。我创建了一个lambda函数,并为我的xgboost模型添加了下面提到的代码。当我尝试测试它时,函数抛出了一个ParamValidation错误。这是我的密码 import json import os import csv import io import boto3 endpointname =os.environ['endpointname'] #nam

我在AWS Sagemaker上训练了一个xgboost模型,并创建了一个端点。现在我想使用AWS Lambda和AWS API调用端点。我创建了一个lambda函数,并为我的xgboost模型添加了下面提到的代码。当我尝试测试它时,函数抛出了一个ParamValidation错误。这是我的密码

import json
import os
import csv
import io
import boto3
endpointname =os.environ['endpointname'] #name of the endpoint I created in sagemaker
runtime = boto3.client('runtime.sagemaker')
def lambda_handler(event, context):
    print("Recieved Event: "+json.dumps(event,indent=2))
    data=json.loads(json.dumps(event))
    print(data)
    response = runtime.invoke_endpoint(EndpointName=endpointname,ContentType='text/csv',Body=data)
    print(response)
    result = json.loads(response['Body'].read().decode())
    print(int(float(result))) #sagemaker xgb returns bytes type for the test case
我创建的测试事件是dict类型的。函数正在抛出参数体的
无效类型,值:{'Time':'7'},类型:,有效类型:,类文件对象
这意味着我应该将byte或bytearray而不是dict类型传递到事件中。但当我读到这篇文章时,它说我的事件类型只能是dict、int、list、float、str或None类型。我按照aws文档中提到的步骤创建lambda函数。有人能解释一下为什么我的代码会抛出上述错误吗?

data=json.load(json.dumps(event))是一个冗余操作
data=event
将返回
True
。我们为测试用例提供的事件是dict类型的。它有一个键值对。键可以是任何东西,值应该是由comas分隔的所有预测变量的单个字符串。为了预测输出,我们需要测试用例的值。因此,例如,声明
payload=data['key']
,然后在
response
中更改
Body=payload
。那就行了