使用azure.identity库遇AttributeError: 'DefaultAzureCredential'无signed_session属性
解决
AttributeError: 'DefaultAzureCredential' object has no attribute 'signed_session'错误 问题描述
我在读取Log Analytics Workspace时遇到标题所示错误,代码如下:
from azure.identity import DefaultAzureCredential from azure.loganalytics import LogAnalyticsDataClient from azure.loganalytics.models import QueryBody from IPython.core.debugger import set_trace # Replace these variables with your actual values workspace_id = 'ABCDE' query = """ddex_CL | take 100 """ credential = DefaultAzureCredential() client = LogAnalyticsDataClient(credential) query_body = QueryBody(query=query) body=query_body) response = client.query(workspace_id, body=query_body).execute() for row in response.tables[0].rows: print(row)
已尝试安装最新版本依赖库:
pip3 install azure-loganalytics azure-identity
当前库版本:
azure-loganalytics:0.1.1azure-identity:1.14.0
但问题仍未解决,请问需要修改哪些库或代码?
解决方案
核心原因
azure-loganalytics 0.1.1是老旧的Azure SDK v1版本,不支持azure-identity的认证机制,它依赖旧版的azure.common.credentials类,因此会触发signed_session不存在的错误。
具体操作步骤
卸载不兼容的旧库
pip uninstall -y azure-loganalytics安装官方推荐的新版SDK
Azure官方已将Log Analytics查询功能整合到azure-monitor-query(v2版本SDK),原生支持azure-identity:pip install azure-monitor-query azure-identity适配新版SDK修改代码
新版API结构与旧版差异较大,调整后的代码示例:from azure.identity import DefaultAzureCredential from azure.monitor.query import LogsQueryClient from azure.monitor.query.models import LogsQueryStatus # 替换为你的实际Workspace ID workspace_id = 'ABCDE' query = """ddex_CL | take 100 """ credential = DefaultAzureCredential() # 初始化新版日志查询客户端 client = LogsQueryClient(credential) # 执行Workspace日志查询 response = client.query_workspace( workspace_id=workspace_id, query=query, ) # 处理并输出查询结果 if response.status == LogsQueryStatus.SUCCESS: table = response.tables[0] for row in table.rows: print(row)
额外提示
azure-monitor-query是Azure监控数据查询的统一SDK,同时支持Log Analytics日志和Metrics指标查询。- 确保你的Azure账号拥有目标Log Analytics Workspace的
Log Analytics Reader或更高权限,避免出现授权错误。
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

