如何使用Postman调用Amazon SageMaker端点并构造请求Payload
如何构造Amazon SageMaker端点的Postman请求Payload
别担心,SageMaker端点的Payload格式其实和你训练时的请求头关系不大,核心是看你的模型类型(内置算法/自定义模型)以及推理逻辑怎么解析输入。我给你分情况拆解:
1. 如果你用的是SageMaker内置算法(比如XGBoost、Linear Learner)
内置算法都有固定的推理输入格式,常见的两种:
- CSV格式:直接传和训练时单条样本一致的特征值,用逗号分隔。比如训练时你的单条数据是
0.5,2.3,1.1,那Payload就直接写这个字符串,请求头设置Content-Type: text/csv。 - JSON格式:用
instances字段包裹特征数组,示例如下:
这时候请求头要设{ "instances": [ [0.5, 2.3, 1.1] ] }Content-Type: application/json。
2. 如果你用的是自定义模型(自己写的训练/推理脚本)
这时候完全看你在inference.py里的input_fn函数是怎么处理输入的——这个函数就是用来解析请求Payload的。举个例子:
如果你的input_fn是这么写的(只接受JSON格式,解析data字段):
def input_fn(request_body, request_content_type): if request_content_type == 'application/json': import json input_data = json.loads(request_body) return input_data['data'] raise ValueError(f"Unsupported content type: {request_content_type}")
那你Postman里的Payload就得对应这个结构:
{ "data": [ [0.5, 2.3, 1.1] ] }
同时请求头必须设Content-Type: application/json。
快速摸准格式的小技巧
如果你记不清或者不确定,直接用SageMaker控制台的「测试端点」功能抄作业:
- 打开SageMaker控制台,找到你的端点,点击「测试」
- 选择对应内容类型,输入和训练时一致的单条测试数据
- 点击测试,成功后把这里的内容类型和Payload原封不动复制到Postman里就行
避坑提醒
- 一定要保证
Content-Type和Payload格式匹配,不然会返回415错误 - 特征顺序必须和训练时完全一致,不然推理结果会完全不对
- 如果训练时做了数据预处理(比如归一化、编码),要么Payload传预处理后的数据,要么把预处理逻辑写到
inference.py的input_fn里
内容的提问来源于stack exchange,提问作者Sujay DSa
相关产品推荐
相关产品推荐

