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"])
添加回答
舉報