当尝试使用
mlflow.log_artifact()
保存/上传文件到 MinIO 时,我们的 MLflow 用户突然在之前工作的代码中遇到此错误,该错误是在 boto3
包中引发的(我们本地用作数据湖的 minio
包的依赖项) MLflow 的安装):
S3UploadFailedError: Failed to upload ./dict-20231204.2.json to mlflow/24/<run_id>/artifacts/dict-20231204.2.json: An error occurred (MissingContentLength) when calling the PutObject operation: You must provide the Content-Length HTTP header.
这里提出:
[..]/python3.11/site-packages/boto3/s3/transfer.py:378, in S3Transfer.upload_file()
有任何解决方案或至少解决方法来恢复文件上传到 MinIO 存储桶吗?
一个快速解决方法是降级引发错误的 S3 客户端包,因此:
$ pip install boto3"<1.36.0"
我已经确定该问题(可能与我们的旧版 MinIO 服务器不兼容)已在
1.36.0
版本的 boto3
(由 mlflow
使用)中引入,并在 v1.36.2
中持续存在。