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

SageMaker监控教程boto3 upload_file传字符串仍报TypeError

报错根因

这个报错和传入upload_file()的本地路径参数"preprocessor.py"无关,错误实际触发在S3对象构造环节。

  • boto3的S3 Object是懒加载对象:调用bucket.Object()传入S3对象键(Key)时不会立刻做参数校验,直到实际调用upload_file()发起S3请求时,才会校验Key的合法性,因此报错栈指向upload_file()调用时很容易误导排查方向。
  • 你当前传入的Key参数code_prefix + "/preprocessor.py"不是合法字符串:绝大多数场景是code_prefix变量没有正确赋值,值为None;少数场景是code_prefix被赋值为Path对象、字节对象等非字符串类型,拼接后的结果不符合boto3的参数类型要求,内部做格式校验时就会抛出TypeError: expected string or bytes-like object。
修复步骤
  1. 先打印code_prefix的值和类型确认问题:
print(f"code_prefix值: {code_prefix}, 类型: {type(code_prefix)}")
  1. 针对排查结果修复:
    • 如果打印显示值为None,回到操作步骤中code_prefix的定义位置重新赋值,按照教程逻辑,该变量应为字符串类型的S3路径前缀,类似sagemaker/model-monitor/demo。
    • 如果是Path等非字符串类型,先转成字符串再拼接S3 Key:
s3_object_key = f"{str(code_prefix)}/preprocessor.py"
bucket.Object(s3_object_key).upload_file("preprocessor.py")
  1. 修复后额外确认当前代码运行的工作目录下存在preprocessor.py本地文件,避免后续触发文件不存在的异常。

内容的提问来源于stack exchange,提问作者saman jahangiri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:51:22