AWS API Gateway传入目标模型仍返回TARGET_MODEL_HEADER_MISSING错误如何解决
Sagemaker多模型端点API Gateway调用TARGET_MODEL_HEADER_MISSING报错解决方案
该报错本质是后端Sagemaker端点没有收到X-Amzn-SageMaker-Target-Model请求头,绝大多数情况是API Gateway默认过滤了X-Amzn开头的自定义请求头,没有透传给后端导致的,按照以下步骤排查修复即可:
1. 配置API Gateway请求头透传
进入对应API的控制台,找到predicted-job-titles接口的集成请求配置页:
- 找到「HTTP 请求头」配置项,点击添加头
- 名称字段填:
X-Amzn-SageMaker-Target-Model - 映射来源字段填:
method.request.header.X-Amzn-SageMaker-Target-Model - 保存配置后重新部署API生效
如果是用CDK、Terraform等IaC工具配置的API,需要在集成配置中显式添加该请求头的透传规则。
2. 修正目标模型参数格式
你当前请求头里的值为/jobtitles-exact,需要和本地boto3调用时传入的TargetModel参数完全一致:
- 若本地boto3调用时参数为
TargetModel="jobtitles-exact.tar.gz",则请求头值要去掉前缀斜杠,改为jobtitles-exact.tar.gz - 要确保该值和S3存储桶中模型对象的相对路径完全匹配,比如模型存放在
s3://your-bucket/models/jobtitle/v1/model.tar.gz,则参数值应为jobtitle/v1/model.tar.gz
修正后的请求代码示例:
import requests headers = {'X-Amzn-SageMaker-Target-Model':'jobtitles-exact.tar.gz'} # 替换为实际的模型相对路径 response = requests.request( "POST", "https://XXXXXXXXXX.execute-api.eu-north-1.amazonaws.com/v1/predicted-job-titles", headers = headers, data = data )
3. 排查额外的头修改逻辑
如果完成上述两步后仍然报错,检查以下配置:
- 如果你配置了Lambda授权器、请求转换器等前置逻辑,确认没有删除/修改
X-Amzn-SageMaker-Target-Model请求头 - 如果你使用的是HTTP API,确认没有开启「自动过滤X-Amzn头」的默认配置
内容的提问来源于stack exchange,提问作者Elias Gudmundsen
相关产品推荐
相关产品推荐

