我已经使用系统分配的托管身份作为身份验证类型为 cosmos db no sql 创建了链接服务,并且链接服务也已发布。现在,当我使用下面的代码从突触分析笔记本访问此链接服务时,它会给出此错误:POST 失败,并显示“错误请求”(400) 和消息:{“result”:“DependencyError”,“errorId”:“BadRequest”, “errorMessage”:“[Code=AuthTypeNotSupported,Target=LS_MI_CosmosDb,Message=不支持链接服务身份验证类型]}。 我的代码是:
import pandas as pd
import json
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
# Read CSV data into a DataFrame
csv_file_path = "file path"
data_frame = pd. read_csv(csv_file_path, encoding='latin1')
# Convert DataFrame to JSON
json_data = data_frame.to_json(orient='records')
# Initialize Cosmos DB client with managed identity
cosmosdb_endpoint = "endpoint"
database_name = "SNM"
container_name = "AliTest"
credential = mssparkutils.credentials.getConnectionStringOrCreds("Linked service") // error on this line
client = CosmosClient(cosmosdb_endpoint, credential=credential)
# Get a reference to the Cosmos DB container
container = client.get_database_client(database_name).get_container_client(container_name)
# Insert JSON data into Cosmos DB container
for item in json.loads(json_data):
container.upsert_item(item)
我已经尝试了各种方法,但仍然遇到 AuthTypeNotSupported 错误。
AFAIK、
mssparkutils.credentials.getConnectionStringOrCreds()
可能不适用于托管身份的 Cosmos 链接服务。
对于 cosmos db 链接服务(具有托管身份),我们不遵循在 cosmos IAM 中通过 UI 分配角色的一般流程。
我们需要分配像this这样的角色,这是一种不同的方式。这可能是错误的原因。
作为解决方法,您可以尝试使用
Account key
身份验证,为了安全起见,您可以使用 Key Vault。
`