You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda调用SageMaker端点报Body参数类型错误如何解决

问题原因
  • boto3的runtime.sagemaker.invoke_endpoint接口要求Body参数必须为字节流、字节数组或类文件对象,你当前代码中传入的payload是Python字典类型,不符合参数要求,直接触发参数校验错误。
  • 现有代码里payload = json.loads(json.dumps(event))属于冗余操作:event本身就是Lambda触发时已经解析好的Python字典,你先将其序列化为JSON字符串又反序列回字典,没有实际作用,还保留了字典类型传给Body参数,直接导致报错。
解决方法

修改Lambda代码的payload处理逻辑,把字典序列化为JSON字符串后编码为字节流再传给Body参数即可,修改后的完整代码如下:

import os
import io
import boto3
import json


ENDPOINT_NAME = 'iris-autoscale-6'
runtime= boto3.client('runtime.sagemaker')

def lambda_handler(event, context):
    # 直接将event字典序列化为JSON字节流
    payload = json.dumps(event).encode('utf-8')
    print(payload)
    
    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME, ContentType='application/json', Body=payload)
    print(response)
    result = json.loads(response['Body'].read().decode())
    print(result)
    
    return result

你当前配置的Lambda权限策略没有问题,修改代码后即可正常调用SageMaker端点。

内容的提问来源于stack exchange,提问作者Naveen Reddy Marthala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 22:39:00