问题通常是由缺少参数引起的。在APIGateway-Sagemaker集成的输入映射中,需要确保未缺少任何必需参数。
以下是一个示例Lambda函数和APIGateway资源定义,指导如何正确定义输入和映射:
import json
import boto3
sagemaker = boto3.client('sagemaker-runtime')
def lambda_handler(event, context):
#获取输入
input_text = event['body']
#调用Sagemaker端口
response = sagemaker.invoke_endpoint(
EndpointName='my-endpoint',
Body=input_text,
ContentType='text/plain'
)
#解析Sagemaker的输出
output_text = response['Body'].read().decode()
#返回响应内容
return {
'statusCode': 200,
'body': output_text
}
在APIGateway的资源上,需要将请求体的映射定义如下:
{
"input_text": "$util.escapeJavaScript($input.body)"
}
此处示例采用了一个名为“input_text”的参数名称。
确保以上代码正确定义后,重新部署APIGateway。如需进一步调试,请验证您的请求的输入内容是否正确,并确保所有必需参数均已正确映射。
上一篇:ApiGateway->WebSocket->Lambda,missingevent.requestContext
下一篇:APIGateway-SerializationException:Startofstructureormapfoundwherenotexpected