我们正在尝试为自定义 REST API 端点生成令牌。我们在 PySpark 中使用 Azure Synapse Notebook。
from azure.identity import DefaultAzureCredential,ManagedIdentityCredential
import requests
credential = ManagedIdentityCredential(client_id='xxxxxx-xxxx-xxxx-xxxx-xxxxx')
这段代码执行成功,没有错误。我知道我们也可以使用 ClientSecret 身份验证,但由于投诉原因,我们只能使用 ManagedIdentityCredential。
但是使用 credential 对象如果我们尝试 get_token 它会抛出错误
token = credential.get_token("api://xxxxxx-xxxx-xxxx-xxxx-xxxxx/.default")
ManagedIdentityCredential.get_token 失败:ManagedIdentityCredential 身份验证不可用,未找到托管身份端点。 -------------------------------------------------- ------------------------- CredentialUnavailableError Traceback(最近调用 最后)[9]第 1 行中的单元格 ----> 1 token = credential.get_token("api://xxxxxx-xxxx-xxxx-xxxx-xxxxx/.default")
文件 〜/cluster-env/clonedenv/lib/python3.10/site-packages/azure/identity/_internal/decorators.py:27, 在 log_get_token..decorator..wrapper(*args, **kwargs) 中 24 @functools.wraps(fn) 25 def 包装器(*args, **kwargs): 26 尝试: ---> 27 令牌 = fn(*args, **kwargs) 28 _LOGGER.info("%s成功",qualified_name) 29 返回令牌
文件 〜/cluster-env/clonedenv/lib/python3.10/site-packages/azure/identity/_credentials/driven_identity.py:93,在 ManagedIdentityCredential.get_token(self, *scopes, **kwargs) 91如果不是self._credential: 92 raise CredentialUnavailableError(message="未找到托管身份端点。") ---> 93 返回 self._credential.get_token(*scopes, **kwargs)
文件 〜/cluster-env/clonedenv/lib/python3.10/site-packages/azure/identity/_credentials/driven_identity.py:190, 在 ImdsCredential.get_token(self, *scopes, **kwargs) 中 188 如果不是 self._endpoint_available: 第189章 正文 --> 190 引发 CredentialUnavailableError(message=message) 第192章 192 193 raise ValueError(“此凭证只需要每个令牌请求一个范围。”)
CredentialUnavailableError:ManagedIdentityCredential 身份验证 不可用,未找到托管身份端点。
您需要在池上运行启动会话以启用托管身份。 请按照以下步骤启用。
单击配置会话
然后启用 作为托管身份运行并应用它。
知道使用
client_id
运行代码。