Azure DevOps自动创建的服务主体无法连接AML工作空间问题咨询
关于Azure DevOps Pipeline中Azure ML工作空间自动认证的问题解答
一、无需手动创建ServicePrincipalAuthentication对象即可实现认证
可以通过Azure DevOps自动注入的环境变量结合DefaultAzureCredential实现无手动配置的服务主体认证,具体操作如下:
- 在Azure DevOps中创建Azure Machine Learning Workspace类型的服务连接(或Azure Resource Manager类型,关联到目标ML工作空间)。
- 在Pipeline任务中启用该服务连接后,DevOps会自动向运行环境注入以下关键环境变量:
AZURE_CLIENT_ID:服务主体IDAZURE_CLIENT_SECRET:服务主体密钥AZURE_TENANT_ID:Azure租户IDAZURE_SUBSCRIPTION_ID:目标订阅ID
- 在Python脚本中使用
DefaultAzureCredential自动读取这些环境变量完成认证,无需手动构建ServicePrincipalAuthentication对象:
注:# 新SDK(azure.ai.ml)示例 from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential import os ml_client = MLClient( credential=DefaultAzureCredential(), subscription_id=os.getenv("AZURE_SUBSCRIPTION_ID"), resource_group_name="<你的资源组名称>", workspace_name="<你的ML工作空间名称>" ) # 旧SDK(azureml.core)示例 from azureml.core import Workspace ws = Workspace.get( name="<你的ML工作空间名称>", subscription_id=os.getenv("AZURE_SUBSCRIPTION_ID"), resource_group_name="<你的资源组名称>", auth=DefaultAzureCredential() )Workspace.from_config认证失败是因为该方法默认读取本地config.json中的交互式认证信息,无法适配DevOps的无交互运行环境,因此需要改用DefaultAzureCredential读取环境变量中的服务主体信息。
二、Azure服务连接中Machine Learning Workspace选项的意义
这个选项核心是简化ML工作空间相关的Pipeline配置,具体作用包括:
- 快速关联目标ML工作空间:创建服务连接时无需手动选择订阅、资源组再定位工作空间,直接选择目标ML工作空间即可完成配置。
- 自动注入工作空间专属变量:除了基础的服务主体认证环境变量,还会注入
AZUREML_WORKSPACE_NAME等工作空间相关变量,避免脚本中硬编码工作空间名称。 - 适配内置ML任务:在Azure DevOps的ML专属内置任务(如批量部署、训练任务等)中,可直接选择该服务连接,无需重复填写工作空间的订阅、资源组信息,提升配置效率。
- 本质仍是服务主体认证:该类型服务连接底层依然基于Service Principal,只是封装了ML工作空间的关联逻辑,减少手动配置步骤。
内容的提问来源于stack exchange,提问作者klettg
相关产品推荐
相关产品推荐

