Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在使用Python SDK验证`DefaultAzureCredential()`吗?_Python_Azure_Exception - Fatal编程技术网

正在使用Python SDK验证`DefaultAzureCredential()`吗?

正在使用Python SDK验证`DefaultAzureCredential()`吗?,python,azure,exception,Python,Azure,Exception,使用try/except和DefaultAzureCredential记录和处理异常的示例方法有哪些 例如: 当在Python Azure函数中使用DefaultAzureCredential时,它会生成一些警告消息,并且凭证链中的一个.get_令牌方法成功 我想记录哪个成功了,哪个失败了 然后它就成功了,但是没有消息表明哪一个成功了。在本例中,在VS代码的.ipynb文件中运行代码段 在生产环境中使用DefaultAzureCredential时,如何记录和处理错误 正在查找类似以下内容的示例

使用try/except和DefaultAzureCredential记录和处理异常的示例方法有哪些

例如:

当在Python Azure函数中使用DefaultAzureCredential时,它会生成一些警告消息,并且凭证链中的一个.get_令牌方法成功

我想记录哪个成功了,哪个失败了

然后它就成功了,但是没有消息表明哪一个成功了。在本例中,在VS代码的.ipynb文件中运行代码段

在生产环境中使用DefaultAzureCredential时,如何记录和处理错误

正在查找类似以下内容的示例:

try:
    credentials = DefaultAzureCredential()
    logging.info(f'<whichever>.get_token succeeded')
except Error1 as e1:
    logging.error(f'EnvironmentCredential.get_token failed: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.', e1)
except Error2 as e2:
    logging.error(f'ManagedIdentityCredential.get_token failed: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.', e2)
...<etc>

我有几种方法可以做到这一点,但没有一种方法特别漂亮。冒着天真建议的风险,如果您希望对顺序中的工作进行细粒度的理解,您可以采取类似于您的示例使用列出的组件凭据所绘制的方法:

对于[EnvironmentCredential,ManagedEntityCredential,…]中的凭据: 尝试: 凭证=凭证 验证凭据功能。。。 logging.info“{}.get_令牌成功”。formatcredential 除错误1作为e1外: 日志记录。由于{},错误{}失败。formatcredential,e1 我之所以建议这样做,是因为您想要的似乎不是以易于访问的方式公开的,查看ChainedCredential源历史记录是建立起来的,但只在日志消息中使用

更独立的方法可能包括创建一个自定义包装器,该包装器基本上与ChainedCredential在运行get_令牌调用列表时对DefaultAzureCredential所做的一样,但如果能够导出成功历史记录,您可能会从我链接的代码中删除它,并执行一些与之直接类似的操作,但归根结底,这都是上述样本的同构


如果我误解了问题的某些方面或您的要求/限制,请不要犹豫,大声喊叫;如果您需要与我们取得联系,请随时联系我们。我是其他一些Python Azure SDK的维护者,我有几种方法可以做到这一点,但没有一种特别好。冒着天真建议的风险,如果您希望对顺序中的工作进行细粒度的理解,您可以采取类似于您的示例使用列出的组件凭据所绘制的方法:

对于[EnvironmentCredential,ManagedEntityCredential,…]中的凭据: 尝试: 凭证=凭证 验证凭据功能。。。 logging.info“{}.get_令牌成功”。formatcredential 除错误1作为e1外: 日志记录。由于{},错误{}失败。formatcredential,e1 我之所以建议这样做,是因为您想要的似乎不是以易于访问的方式公开的,查看ChainedCredential源历史记录是建立起来的,但只在日志消息中使用

更独立的方法可能包括创建一个自定义包装器,该包装器基本上与ChainedCredential在运行get_令牌调用列表时对DefaultAzureCredential所做的一样,但如果能够导出成功历史记录,您可能会从我链接的代码中删除它,并执行一些与之直接类似的操作,但归根结底,这都是上述样本的同构


如果我误解了问题的某些方面或您的要求/限制,请不要犹豫,大声喊叫;如果您需要与我们取得联系,请随时联系我们。我是其他一些Python Azure SDK的维护者。为了用更多细节补充已接受的答案,让我补充一下DefaultAzureCredential确实记录了此信息。例如,如果启用信息级别日志记录:

import logging
from azure.identity import DefaultAzureCredential

logger = logging.getLogger('azure.identity')
logger.setLevel(logging.INFO)

handler = logging.StreamHandler(stream=sys.stdout)
formatter = logging.Formatter('[%(levelname)s %(name)s] %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
您将从DefaultAzureCredential中看到如下日志消息:

您将看到仅在DefaultAzureCredential实例第一次获取令牌时记录的失败尝试。一旦它的一个组成凭证提供了令牌,它就专门使用该凭证。因此,此特定的DefaultAzureCredential将始终通过Visual Studio代码进行身份验证,并且在日志中,每当它这样做时,您将看到以下消息:

[INFO] DefaultAzureCredential acquired a token from VisualStudioCodeCredential

为了用更多的细节补充已接受的答案,让我添加DefaultAzureCredential来记录此信息。例如,如果启用信息级别日志记录:

import logging
from azure.identity import DefaultAzureCredential

logger = logging.getLogger('azure.identity')
logger.setLevel(logging.INFO)

handler = logging.StreamHandler(stream=sys.stdout)
formatter = logging.Formatter('[%(levelname)s %(name)s] %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
您将从DefaultAzureCredential中看到如下日志消息:

您将看到仅在DefaultAzureCredential实例第一次获取令牌时记录的失败尝试。一旦它的一个组成凭证提供了令牌,它就专门使用该凭证。因此,此特定的DefaultAzureCredential将始终通过Visual Studio代码进行身份验证,并且在日志中,每当它这样做时,您将看到以下消息:

[INFO] DefaultAzureCredential acquired a token from VisualStudioCodeCredential

谢谢你提供了一些想法。我想确保我没有覆盖任何与Defa有关的内容
ultAzureCredential正在运行,我实际使用的是DefaultAzureCredential。我看不出你建议的解决方案中列出了它。在您的解决方案中,对DefaultAzureCredential的实际调用在哪里?要清楚,我的解决方案基本上是围绕“需要显式使用DefaultAzureCredential”展开的,因为我看不到从中提取所需信息的明显方法;它只是不能持久化,所以您需要有自己的DefaultAzureCredential版本,这就是我上面概述的。与我自己的观点相呼应:我不认为有一种方法可以让您实际使用DefaultAzureCredential明确地满足上述要求,从而了解它的成功和失败之处。谢谢您的澄清。由于我目前的经验水平,我不希望创建自己的DefaultAzureCredential版本。除非您知道一个简单的Python方法来捕获显示的所有警告消息,否则我将采用另一种方法。谢谢您提供了一些想法。我想确保我没有覆盖DefaultAzureCredential正在做的任何事情,并且我实际上正在使用DefaultAzureCredential。我看不出你建议的解决方案中列出了它。在您的解决方案中,对DefaultAzureCredential的实际调用在哪里?要清楚,我的解决方案基本上是围绕“需要显式使用DefaultAzureCredential”展开的,因为我看不到从中提取所需信息的明显方法;它只是不能持久化,所以您需要有自己的DefaultAzureCredential版本,这就是我上面概述的。与我自己的观点相呼应:我不认为有一种方法可以让您实际使用DefaultAzureCredential明确地满足上述要求,从而了解它的成功和失败之处。谢谢您的澄清。由于我目前的经验水平,我不希望创建自己的DefaultAzureCredential版本。除非您知道一个简单的Python方法来捕获显示的所有警告消息,否则我将采用另一种方法。