You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Function App中调用AZ Cli/Bash实现ADX集群定时关停?

是否可以在Azure Function App内部调用AZ Cli / Bash?

需求背景

  • 核心目标:在办公时间结束后自动关停ADX集群,以此节省使用成本
  • 首选认证方式:用户分配标识(User Assigned Identity, UAI)
  • 预期能力:可调用ADX集群的停止操作接口

认知纠偏

原本认为python.mgmt.kusto的KustoManagementClient缺少UAI对接能力,该说法并不正确。只需搭配azure-identity包,即可通过其提供的ManagedIdentityCredential、DefaultAzureCredential等接口生成符合要求的凭据实例,支持显式传入UAI ID生成凭据,生成的凭据可直接被KustoManagementClient使用。

落地实践方案

如果需要同一套代码同时兼容本地测试和云端部署,按需生成凭据实例是最优方案。通常DefaultAzureCredential接口可以满足需求,若实际运行异常,可按场景显式指定认证来源:

本地测试场景

指定使用本地CLI登录凭据,代码示例:

from azure.identity import DefaultAzureCredential

credentials = DefaultAzureCredential(
                            exclude_environment_credential=True, 
                            exclude_managed_identity_credential=True,
                            exclude_powershell_credential=True,
                            exclude_visual_studio_code_credential=True,
                            exclude_shared_token_cache_credential=True,
                            exclude_interactive_browser_credential=True,
                            exclude_cli_credential=False
                        )

云端运行场景

直接通过UAI的client_id生成凭据,代码示例:

credentials = ManagedIdentityCredential(client_id="******")

集群操作执行代码

凭据生成完成后即可调用Kusto SDK执行集群启停操作,示例代码:

mclient = KustoManagementClient(credentials, SUBSCRIPTION_ID)
cluster_operations = mclient.clusters
# 启停操作可按需替换,示例为启动操作,停止可调用begin_stop方法
cluster_operations.begin_start(RG, ADX)

本方案未验证在函数中直接调用AZ CLI的实现方式,该路径已有成熟的可落地实现方案,如有需要也可选择该技术路线。

内容的提问来源于stack exchange,提问作者Andre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:48:05