调用MLClient连接Blob存储报错:BlobServiceClient无_to_rest_object属性
问题原因与解决方案
错误原因
MLClient.connections.create_or_update()方法要求传入WorkspaceConnection类型的对象,而非Azure Storage SDK中的BlobServiceClient。报错中的_to_rest_object()是WorkspaceConnection类的内部方法,BlobServiceClient不存在该属性,因此触发AttributeError。
无需BlobServiceClient的实现方式
直接使用Azure ML SDK的WorkspaceConnection类即可创建Blob存储连接,以下是两种常用实现:
方式1:使用存储账户连接字符串
from azure.ai.ml.entities import WorkspaceConnection, WorkspaceConnectionProperties, WorkspaceConnectionPropertiesAuthType # 构建连接属性 connection_properties = WorkspaceConnectionProperties( target=account_url, # 格式示例:"https://<存储账户名>.blob.core.windows.net" auth_type=WorkspaceConnectionPropertiesAuthType.ACCOUNT_KEY, credentials={"connection_string": "<你的存储账户连接字符串>"} ) # 创建WorkspaceConnection对象 blob_connection = WorkspaceConnection( name="<自定义连接名称>", type="azure_blob", properties=connection_properties ) # 执行创建/更新操作 client.connections.create_or_update(blob_connection)
方式2:使用Azure AD凭据(如DefaultAzureCredential)
from azure.ai.ml.entities import WorkspaceConnection, WorkspaceConnectionProperties, WorkspaceConnectionPropertiesAuthType connection_properties = WorkspaceConnectionProperties( target=account_url, auth_type=WorkspaceConnectionPropertiesAuthType.MSI, # 根据实际凭据类型调整,如SERVICE_PRINCIPAL credentials={ "client_id": "<客户端ID>", # 使用服务主体时需要,MSI模式可省略 "tenant_id": "<租户ID>" } ) blob_connection = WorkspaceConnection( name="<自定义连接名称>", type="azure_blob", properties=connection_properties ) client.connections.create_or_update(blob_connection)
注意事项
<自定义连接名称>需保证在Azure ML工作区内唯一- 凭据参数需匹配实际认证方式:账户密钥模式传
connection_string;MSI/服务主体模式传入对应身份信息 - 可通过
client.connections.get("<连接名称>")验证连接是否创建成功
内容的提问来源于stack exchange,提问作者Pavel Bazhutov
相关产品推荐
相关产品推荐

