azure-functions - 如何在 Azure Function App 中使用 AZ Cli 或 Bash?
问题描述
是否可以在 Azure Function App 中调用 AZ Cli / Bash?
我的目标是在办公时间之后自动关闭 ADX 集群,因为这样可以节省成本。
在身份验证方法使用用户分配的身份(UAI)的情况下调用类似的方法会很好:
https://docs.microsoft.com/en-us/cli/azure/kusto/cluster?view=azure-cli-latest#az_kusto_cluster_stop
我会使用 python.mgmt.kusto API,但它缺少与 UAI 的连接:
编辑: KustoManagementClient 中没有接口是不正确的。您需要使用具有接口(ManagedIdentityCredential、DefaultAzureCredential)的包 python-identity 从默认标识方法或通过传递 UAI id 显式生成凭据实例。KustoManagementClients 可以使用这些凭据。
Edit2:我想与您分享我的经验和我的最终解决方案。
如果您想在本地测试或云中使用相同的代码,例如在开发功能应用程序期间,生成凭证实例是最好的方法。通常 API 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
)
在我不得不去的云网站上
credentials = ManagedIdentityCredential(client_id="******")
最后我的集群终于关闭了:
mclient = KustoManagementClient(credentials, SUBSCRIPTION_ID)
cluster_operations = mclient.clusters
cluster_operations.begin_start(RG, ADX)
我必须承认我最后没有检查 python CLI 界面,但是这个线程中接受的答案显示了你如何做到这一点。
谢谢!
解决方案
是的,您可以在函数应用中运行 Azure CLI。Azure CLI 是一个可执行的 Python 包,您可以从其PyPI 页面找到它。
如果按照官方教程快速入门:在 Azure 中创建 HTTP 触发 Python 函数创建 Azure Function App for Python,可以尝试通过 将 Azure CLI 安装为 Python 包pip install azure-cli
,然后参考其他 SO 线程Azure Function - trigger包含 Azure CLI 命令的 Python 脚本,可使用参数调用它以根据需要创建资源。
或者,要安装 Azure CLI,您可以将整个 Azure CLI 目录从本地计算机复制到 kudu 控制台,如下所示SO 参考线程。
推荐阅读
- node.js - 如何使用 MongoDB 检查未更改或未记录的字段?
- keras - 如何在数值数据集上使用自动编码器进行聚类?
- path - 设置jdk的路径
- swift - 如何在下面的代码中发送带有正文的 POST 请求
- java - Hibernate @SecondaryTables 多个 pkJoinColumns
- c# - 检查属性类型是否为 List<> 类型
- sql - 如何在存储过程的执行语句中使用生成器?
- docker - 在 docker 命令行中分配多个卷时,docker 容器实例中的文件夹消失
- google-visualization - Google Visualization 中 vAxis 数字的统一上标指数(类似于 Matlab 图表)
- javascript - 在 javascript 中,是否会在突变观察者看到之前触发脚本标记 onload 事件?