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

使用系统分配托管身份的Cosmos DB链接服务在Synapse Notebook报错

解决Synapse Notebook中托管身份认证Cosmos DB链接服务的AuthTypeNotSupported错误

问题原因

mssparkutils.credentials.getConnectionStringOrCreds()方法仅支持基于连接字符串、密钥这类传统认证方式的链接服务,不支持托管身份类型的链接服务,这是触发AuthTypeNotSupported错误的核心原因。

解决方案

直接使用DefaultAzureCredential调用Synapse的系统分配托管身份完成认证,无需通过链接服务获取凭证。具体修改如下:

修改后的完整代码

import pandas as pd
import json

from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient

# 读取CSV数据到DataFrame
csv_file_path = "file path"
data_frame = pd.read_csv(csv_file_path, encoding='latin1')
# 转换DataFrame为JSON格式
json_data = data_frame.to_json(orient='records')

# 使用系统分配托管身份初始化Cosmos DB客户端
cosmosdb_endpoint = "你的Cosmos DB端点"
database_name = "SNM"
container_name = "AliTest"

# 自动调用Synapse系统分配托管身份完成认证
credential = DefaultAzureCredential()
client = CosmosClient(cosmosdb_endpoint, credential=credential)

# 获取容器引用
container = client.get_database_client(database_name).get_container_client(container_name)

# 批量插入数据
for item in json.loads(json_data):
    container.upsert_item(item)

额外检查项

  • 确保Synapse工作区的系统分配托管身份已被授予Cosmos DB的操作权限:
    • 进入Azure门户的Cosmos DB资源页,打开「访问控制(IAM)」
    • 添加角色分配,选择匹配需求的角色(如Cosmos DB Built-in Data Contributor用于数据读写,DocumentDB Account Contributor用于账户级配置)
    • 将Synapse工作区的系统分配托管身份设为权限主体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:07:43