是否可以在 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 界面,但是这个线程中接受的答案显示了你如何做到这一点。
谢谢!