使用系统分配的托管身份链接服务通过azure synapse分析笔记本访问cosmos db

问题描述 投票:0回答:1

我已经使用系统分配的托管身份作为身份验证类型为 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 错误。

azure-cosmosdb azure-managed-identity azure-synapse-analytics azure-notebooks mssparkutils
1个回答
0
投票

AFAIK

mssparkutils.credentials.getConnectionStringOrCreds()
可能不适用于托管身份的 Cosmos 链接服务。

对于 cosmos db 链接服务(具有托管身份),我们不遵循在 cosmos IAM 中通过 UI 分配角色的一般流程。

我们需要分配像this这样的角色,这是一种不同的方式。这可能是错误的原因。

作为解决方法,您可以尝试使用

Account key
身份验证,为了安全起见,您可以使用 Key Vault。

enter image description here
`

© www.soinside.com 2019 - 2024. All rights reserved.