2 回答
TA贡献1906条经验 获得超3个赞
我尝试使用 HttpTrigger 创建一个简单的 Azure 函数,以通过不同方式调用 Azure CLI 工具,但发布后从未在云上工作。
似乎唯一的解决方案是在将所需的包添加到文件中后,将该功能发布为带有--build-native-deps
命令选项的docker 镜像,如下图所示,func azure functionapp publish <your function app name>
azure-cli
requirements.txt
恢复依赖项时出错。错误:无法安装 antlr4-python3-runtime-4.7.2 依赖项:不支持没有轮子的二进制依赖项。 使用 --build-native-deps 选项使用 Docker 容器自动构建和配置依赖项。更多信息,请访问https://aka.ms/func-python-publish
由于我本地没有 docker 工具,我没有成功运行func azure functionapp publish <your function app name> --build-native-deps.
同时,运行 Azure CLI 命令并不是使用 Azure CLI 功能的唯一方式。该az命令只是一个可运行的脚本文件,而不是二进制执行文件。在我查看az了一些包的源代码之后azure-cli,我认为您可以直接通过导入包from azure.cli.core import get_default_cli并使用它来执行与下面代码相同的操作。
from azure.cli.core import get_default_cli
az_cli = get_default_cli()
exit_code = az_cli.invoke(args)
sys.exit(exit_code)
代码是参考包的源码编写的azure/cli/__main__.py,azure-cli你可以从lib/python3.x/site-packages你的虚拟环境的路径中看到。
希望能帮助到你。
TA贡献1859条经验 获得超6个赞
谢谢,彼得,我最后使用了类似的东西并让它工作。我有这个函数,它将运行 AZ CLI 命令并在需要时返回结果(例如,如果我需要运行 cli 命令但还存储输出,例如,如果我想知道服务的对象 ID主要是,我可以得到像这个例子中的结果:
def az_cli (args):
cli = get_default_cli()
cli.invoke(args)
if cli.result.result:
return cli.result.result
elif cli.result.error:
raise cli.result.error
return True
现在,我可以这样调用(client_id是 ServicePrincipal ID):
ob_id = az_cli(['ad', 'sp', 'show', '--id', client_id])
print(ob_id["objectId"])
添加回答
举报