如何在Azure功能应用程序内使用AZ Cli或Bash ?



是否可以在Azure功能应用程序中调用AZ Cli/Bash ?

我的目标是在办公时间后自动关闭ADX集群,因为这样可以节省成本。

在身份验证方法使用用户分配身份(UAI)的地方调用类似的东西会很好:

https://learn.microsoft.com/en-us/cli/azure/kusto/cluster?view=azure-cli-latest az_kusto_cluster_stop

我将使用python.mgmt.kusto API,但它缺乏与UAI的连接:

https://learn.microsoft.com/de-de/python/api/azure-mgmt-kusto/azure.mgmt.kusto.kustomanagementclient?view=azure-python

编辑:在KustoManagementClient中没有接口是不正确的。您需要使用具有接口(ManagedIdentityCredential、DefaultAzureCredential)的包python-identity来从默认标识方法或通过传递ai 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函数来创建Python的Azure函数应用程序,你可以尝试通过pip install azure-cli将Azure CLI安装为Python包,然后参考其他SO线程Azure函数触发Python脚本包含Azure CLI命令,用你的参数调用它来创建你想要的资源。

或者,要安装Azure CLI,您可以将整个Azure CLI目录从本地机器复制到kudu控制台,如下所示SO参考线程。

相关内容

  • 没有找到相关文章

最新更新