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

Azure部署MLflow Docker:保存制品至Blob Storage报MissingRequiredHeader错误

问题

通过Docker镜像在Azure上部署MLflow服务器后,服务器URL可正常访问,但保存制品到Azure Blob Storage时触发报错:

requests.exceptions.HTTPError: 400 Client Error: An HTTP header that's mandatory for this request is not specified

补充信息:

  • 使用Azure Blob Storage存储制品,SQL后端连接正常
  • 启动脚本launch.sh内容:
mlflow server \
--backend-store-uri "$MLFLOW_BACKEND_STORE_URI" \
--default-artifact-root "$MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT" \
--host "$MLFLOW_SERVER_HOST" \
--port "$MLFLOW_SERVER_PORT" \
--workers "$MLFLOW_SERVER_WORKERS"
  • Azure Web应用配置的环境变量示例:
MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT="https://$STORAGE_ACCOUNT_NAME.blob.core.windows.net/$STORAGE_CONTAINER_NAME?$SAS_TOKEN"

AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=$STORAGE_ACCOUNT_NAME;AccountKey=$AZURE_STORAGE_ACCESS_KEY;BlobEndpoint=https://$STORAGE_ACCOUNT_NAME.blob.core.windows.net/;FileEndpoint=https://$STORAGE_ACCOUNT_NAME.file.core.windows.net/;QueueEndpoint=https://$STORAGE_ACCOUNT_NAME.queue.core.windows.net/;TableEndpoint=https://$STORAGE_ACCOUNT_NAME.table.core.windows.net/"
解决思路与方案
  • 检查SAS令牌的权限与格式
    当前用SAS令牌拼接在MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT里,要确保SAS令牌包含写入、创建、删除等必要权限,且未过期。另外注意SAS令牌开头不要带?,如果生成的SAS是?sv=xxx,要去掉前面的?,只保留sv=xxx&...部分,避免重复的?导致解析错误,进而缺失请求头。

  • 切换使用Azure存储连接字符串配置制品根目录
    放弃带SAS的URL作为default-artifact-root,改用wasbs格式路径:wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/,MLflow会自动通过AZURE_STORAGE_CONNECTION_STRING获取认证信息,避免手动拼接SAS带来的头信息缺失问题。

    修改后的MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT示例:

    MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT="wasbs://$STORAGE_CONTAINER_NAME@$STORAGE_ACCOUNT_NAME.blob.core.windows.net/"
    
  • 验证环境变量是否正确传递到容器
    在Azure Web应用的容器内执行命令,检查环境变量是否正确加载:

    echo $AZURE_STORAGE_CONNECTION_STRING
    echo $MLFLOW_SERVER_DEFAULT_ARTIFACT_ROOT
    

    确保$STORAGE_ACCOUNT_NAME这类占位符已被替换为实际值,且变量值无空值或解析错误。

  • 检查MLflow版本兼容性
    旧版本MLflow对Azure Blob Storage的SAS令牌支持可能存在问题,建议升级到2.x以上的最新稳定版MLflow,确保与Azure存储服务API兼容,避免版本差异导致的请求头缺失。

内容的提问来源于stack exchange,提问作者Sabrine Bendimerad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:05:04