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

从ADO项目源安装包遇401错误,AML中uv认证失败求助

解决AML中uv访问ADO私有包源的401授权错误

问题回顾

项目依赖Azure DevOps(ADO)私有包源,在AML组件环境文件配置依赖后,AML环境内的pip可正常访问该包,但使用uv安装时出现如下错误:

An index URL could not be queried due to a lack of valid authentication credentials (401 Unauthorized).

本地通过安装keyring+artifact-keyring、ADO构建机通过设置环境变量均可正常运行,但AML环境中此方法失效。

可行解决方案

1. 显式配置AML环境变量

在AML组件的环境配置中添加uv所需的ADO认证变量:

  • 设置UV_INDEX_AZURE_DEVOPS_USERNAME为"VssSessionToken"
  • 设置UV_INDEX_AZURE_DEVOPS_PASSWORD为有效的ADO访问令牌(推荐将令牌存储在AML密钥保管库中,通过密钥引用方式调用,避免硬编码)

组件yaml示例:

environment:
  variables:
    UV_INDEX_AZURE_DEVOPS_USERNAME: "VssSessionToken"
    UV_INDEX_AZURE_DEVOPS_PASSWORD: ${azureml:keyvault://<你的密钥保管库名称>/<ADO-PAT密钥名>}

2. 配置uv全局认证文件

在AML计算实例或组件运行环境中,创建或修改uv配置文件~/.config/uv/config.toml,添加ADO源的认证信息:

[indexes.azure-devops]
username = "VssSessionToken"
password = "<你的ADO个人访问令牌>"

若为批量运行组件,可将此配置文件作为AML数据资产传入,或在启动脚本中动态生成。

3. 利用AML托管身份认证

若AML工作区的系统托管身份已被授予ADO包源的读取权限,可直接用该身份获取令牌:

  1. 在ADO中为AML工作区的系统托管身份配置包源读取权限
  2. 在AML环境变量中设置:
    environment:
      variables:
        UV_INDEX_AZURE_DEVOPS_USERNAME: "VssSessionToken"
        UV_INDEX_AZURE_DEVOPS_PASSWORD: $(System.AccessToken)
    
    注:此方式仅适用于AML与ADO同租户且身份权限配置正确的场景。

原因说明

  • 本地环境的keyring依赖桌面系统密钥环服务,但AML运行环境多为无桌面容器,密钥环服务不可用,uv无法自动获取凭据
  • ADO构建机的环境变量是直接注入构建上下文,但AML组件默认不会自动继承这类认证变量,需显式配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:18:22