本地运行的MLflow服务连接Minio时如何传递访问凭证
MLflow服务连接Minio凭证配置方案
出现NoCredentialsError错误是因为你在客户端代码中配置的环境变量仅作用于你的业务代码进程,独立运行的MLflow服务进程无法读取这些配置,需要单独为MLflow服务进程注入Minio访问相关的参数与凭证,可选择以下任意一种方式实现:
方法1:启动命令内联环境变量(临时生效)
直接在MLflow启动命令前拼接需要的环境变量即可,单次启动生效:
MLFLOW_S3_ENDPOINT_URL=http://localhost:9000 \ AWS_ACCESS_KEY_ID=替换为你的Minio访问密钥ID \ AWS_SECRET_ACCESS_KEY=替换为你的Minio访问密钥 \ mlflow server -h 0.0.0.0 -p 5000 --default-artifact-root s3://mlbucket --backend-store-uri sqlite:///mlflow.db
方法2:导出环境变量到Shell会话(当前终端生效)
先在当前终端执行环境变量导出命令,后续在该终端启动的MLflow服务都可以自动读取配置:
export MLFLOW_S3_ENDPOINT_URL=http://localhost:9000 export AWS_ACCESS_KEY_ID=替换为你的Minio访问密钥ID export AWS_SECRET_ACCESS_KEY=替换为你的Minio访问密钥
导出完成后再执行原来的MLflow启动命令即可:
mlflow server -h 0.0.0.0 -p 5000 --default-artifact-root s3://mlbucket --backend-store-uri sqlite:///mlflow.db
如果需要永久生效,可以把上面3条export命令添加到当前用户的~/.bashrc(Bash shell)或~/.zshrc(Zsh shell)配置文件中,执行source ~/.bashrc(或对应配置文件)后全局生效。
方法3:通过AWS配置文件存放凭证(全局永久生效)
你也可以通过AWS标准配置文件存放密钥,无需每次启动都设置环境变量:
- 在用户目录下创建
.aws/credentials文件,写入以下内容:
[default] aws_access_key_id = 替换为你的Minio访问密钥ID aws_secret_access_key = 替换为你的Minio访问密钥
- 仍需要全局配置
MLFLOW_S3_ENDPOINT_URL参数,将以下内容添加到~/.bashrc或~/.zshrc文件中:
export MLFLOW_S3_ENDPOINT_URL=http://localhost:9000
配置完成后执行source ~/.bashrc生效,后续直接执行MLflow启动命令即可。
内容的提问来源于stack exchange,提问作者Tom J Muthirenthi
相关产品推荐
相关产品推荐

