使用try/except和DefaultAzureCredential()
记录和处理异常的一些示例方法是什么
示例:
当在Python Azure函数中使用DefaultAzureCredential()
时,它会生成一些WARNING
消息,并且凭证链中的一个.get_token
方法成功
我想记录哪些成功,哪些失败。
WARNING:azure.identity._internal.decorators:EnvironmentCredential.get_token failed: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
WARNING:azure.identity._internal.decorators:ManagedIdentityCredential.get_token failed: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
WARNING:azure.identity._internal.decorators:SharedTokenCacheCredential.get_token failed: SharedTokenCacheCredential authentication unavailable. No accounts were found in the cache.
WARNING:azure.identity._internal.decorators:VisualStudioCodeCredential.get_token failed: Failed to get Azure user details from Visual Studio Code.
然后它就成功了,但是没有消息表明哪一个成功了。在本例中,在.ipynb
文件(VS代码)中运行代码段
在生产中使用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>
为了用更多的细节补充已接受的答案,让我补充一下
DefaultAzureCredential
确实记录了这些信息。例如,如果启用信息级别日志记录:您将在
DefaultAzureCredential
中看到如下日志消息:您将看到仅在
DefaultAzureCredential
实例第一次获取令牌时记录的失败尝试。一旦它的一个组成凭证提供了令牌,它就专门使用该凭证。因此,这个特定的DefaultAzureCredential
将始终通过Visual Studio代码进行身份验证,并且在日志中,每当它这样做时,您将看到以下消息:我有几种方法可以做到这一点,但没有一种方法特别漂亮。冒着天真建议的风险,如果您希望对顺序中的工作进行细粒度的理解,您可以采取类似于您的示例使用列出的组件凭据所绘制的方法here:
我建议这样做是因为它看起来不像是以一种易于访问的方式公开您想要的内容,查看
ChainedCredential
源代码here(历史是建立的,但只在日志消息中使用)更多的“自包含”方法可能涉及创建一个自定义包装器,它基本上完成了
ChainedCredential
在运行get_令牌调用列表时为DefaultAzureCredential
所做的工作,但如果能够导出成功历史记录,您可能会从我在2中链接的代码中删除它,并做一些与the DefaultAzureCredential logic直接类似的事情,但归根结底,这都是上述样本的同构如果我误解了问题的某些方面或您的要求/限制,请不要犹豫,大声喊叫;如果您需要与我们联系,请随时联系我们on our github(完全公开,我是其他一些Python Azure SDK的维护者)
相关问题 更多 >
编程相关推荐