事件
快速入門: 從命令列在 Azure 中建立 Python 函式
在本文中,您會使用命令列工具建立可回應 HTTP 要求的 Python 函式。 在本機測試程式碼之後,您可以將其部署到 Azure Functions 的無伺服器環境。
本文使用適用於 Azure Functions 的 Python v2 程式設計模型,其會提供裝飾型方法來建立函式。 若要深入了解 Python v2 程式設計模型,請參閱開發人員參考指南
完成本快速入門後,您的 Azure 帳戶中會產生幾美分或更少的少許費用。
這也是本文的 Visual Studio Code 型版本。
開始之前,您必須符合下列需求:
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
下列其中一項用來建立 Azure 資源的工具:
Azure CLI 2.4 版或更新版本。
Azure Az PowerShell 模組5.9.0 版或更新版本。
Azurite 儲存體模擬器。 雖然您也可以使用實際的 Azure 儲存體帳戶,但本文假設您使用的是此模擬器。
安裝 Core Tools 的建議方式取決於本機開發電腦的作業系統。
下列步驟使用 APT 在 Ubuntu/Debian Linux 散發套件上安裝 Core Tools。 若為其他 Linux 散發套件,請參閱 Core Tools 讀我檔案。
安裝 Microsoft 套件存放庫 GPG 金鑰,以驗證套件完整性:
Bashcurl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
在執行 APT 更新之前,請先設定 APT 來源清單。
Ubuntu
Bashsudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs 2>/dev/null)-prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
Debian
Bashsudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs 2>/dev/null | cut -d'.' -f 1)/prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
檢查
/etc/apt/sources.list.d/dotnetdev.list
檔案是否含有下表所列的其中一個相應 Linux 版本字串:Linux 發行版本 版本 Debian 12 bookworm
Debian 11 bullseye
Debian 10 buster
Debian 9 stretch
Ubuntu 22.04 jammy
Ubuntu 20.04 focal
Ubuntu 19.04 disco
Ubuntu 18.10 cosmic
Ubuntu 18.04 bionic
Ubuntu 17.04 zesty
Ubuntu 16.04/Linux Mint 18 xenial
啟動 APT 來源更新:
Bashsudo apt-get update
安裝 Core Tools 套件:
Bashsudo apt-get install azure-functions-core-tools-4
使用 func --version
命令確定您的 Core Tools 版本至少為 4.0.5530
。
在適用的資料夾中執行下列命令,以建立並啟用名為 .venv
的虛擬環境。 請確定您在使用 受 Azure Functions 支援的 Python 版本。
python -m venv .venv
source .venv/bin/activate
如果 Python 未在您的 Linux 發行版本上安裝 venv 套件,請執行下列命令:
sudo apt-get install python3-venv
您將在這個已啟用的虛擬環境中執行所有後續命令。
在 Azure Functions 中,函式專案是包含一或多個個別函式的容器,而每個函式分別會回應特定的觸發程序。 專案中的所有函式會共用相同的本機和裝載設定。
在本章節中,您會建立函式專案,並新增 HTTP 觸發的函式。
執行
func init
命令,如下所示,在虛擬環境中建立 Python v2 函式專案。主控台func init --python
現在的環境會包含專案的各種檔案,包括名為 local.settings.json 和 host.json 的設定檔。 由於 local.settings.json 可能會包含從 Azure 下載的秘密,因此 .gitignore 檔案依預設會將該檔案排除在原始檔控制以外。
使用下列命令,將函式新增至您的專案,其中
--name
引數是函式的唯一名稱 (HttpExample),而--template
引數可指定函式的觸發程序 (HTTP)。主控台func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
如果出現提示,請選擇 [ANONYMOUS] 選項。
func new
會將名為HttpExample
的 HTTP 觸發程序端點新增至function_app.py
檔案,該檔案不需要驗證即可存取。
從 LocalFunctionProj 資料夾啟動本機 Azure Functions 執行階段主機以執行您的函式。
主控台func start
在輸出的結尾處,必須出現下列幾行:
注意
如果 HttpExample 未如上顯示,表示您可能不是從專案的根資料夾啟動主機。 在此情況下,請使用 Ctrl+C 來停止主機並前往專案的根資料夾,然後再次執行先前的命令。
從此輸出中,將 HTTP 函數的 URL 複製到瀏覽器,並附加查詢字串
?name=<YOUR_NAME>
,以製作完整的 URL,如http://localhost:7071/api/HttpExample?name=Functions
。 瀏覽器應該會顯示回應訊息,以回應您的查詢字串值。 您在其中啟動專案的終端機,也會在您提出要求時顯示記錄輸出。當您完成時,請按 Ctrl+C,然後輸入
y
以停止函數主機。
若要將函式程式碼部署至 Azure,您必須先建立三個資源:
- 資源群組,其為相關資源的邏輯容器。
- 儲存體帳戶,可維護專案的狀態和其他資訊。
- 函數應用程式,其提供執行函式程式碼的環境。 函式應用程式可對應至您的本機函式專案,並可讓您將函式分組為邏輯單位,以便管理、部署和共用資源。
請使用下列命令來建立這些項目。 Azure CLI 和 PowerShell 均受支援。
如果需要,請登入 Azure。
Azure CLIaz login
az login
命令會將您登入 Azure 帳戶。在您選擇的區域中,建立名為
AzureFunctionsQuickstart-rg
的資源群組。Azure CLIaz group create --name AzureFunctionsQuickstart-rg --location <REGION>
az group create 命令會建立資源群組。 在上述命令中,使用 az account list-locations 命令所傳回的可用區域代碼,將
<REGION>
取代為您附近的區域。注意
您無法在相同的資源群組中裝載 Linux 和 Windows 應用程式。 如果您有名為
AzureFunctionsQuickstart-rg
的現有資源群組,且其中包含 Windows 函式應用程式或 Web 應用程式,則必須使用不同的資源群組。在您的資源群組和區域中建立一般用途的儲存體帳戶。
Azure CLIaz storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
az storage account create 命令會建立儲存體帳戶。
在上述範例中,將
<STORAGE_NAME>
取代為適合您且在 Azure 儲存體中是唯一的名稱。 名稱只能包含 3 到 24 個字元的數字和小寫字母。Standard_LRS
會指定 受 Functions 支援的一般用途帳戶。在本快速入門中,儲存體帳戶只會產生幾美分的費用。
在 Azure 中建立函數應用程式。
Azure CLIaz functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime python --runtime-version <PYTHON_VERSION> --functions-version 4 --name <APP_NAME> --os-type linux --storage-account <STORAGE_NAME>
az functionapp create 命令會在 Azure 中建立函式應用程式。 您必須提供
--os-type linux
,因為 Python 函式只會在 Linux 上執行。在先前的範例中,將
<APP_NAME>
取代為適合您的全域唯一名稱。<APP_NAME>
也是函式應用程式的預設子網域。 請確定您為<PYTHON_VERSION>
設定的值是 Functions 支援的版本,而且與您在本機開發期間所使用的版本相同。此命令會依據 Azure Functions 使用方案,建立在您指定的語言執行階段中執行的函式應用程式,而此應用程式在此處產生的使用量是免費的。 此命令也會在相同的資源群組中建立建立關聯的 Azure Application Insights 執行個體,您可將其用於監視函數應用程式和檢視記錄。 如需詳細資訊,請參閱監視 Azure Functions。 在您啟用此執行個體之前,並不會產生任何成本。
在 Azure 中成功建立函式應用程式之後,您就可以開始使用 func azure functionapp publish
命令來部署本機函式專案。
在您的根專案資料夾中,執行此 func azure functionapp publish
命令:
func azure functionapp publish <APP_NAME>
在此範例中,使用您的應用程式名稱取代 <APP_NAME>
。 成功的部署會顯示類似下列輸出的結果 (為了簡單起見,已將其截斷):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
由於您的函式會使用 HTTP 觸發程序,因此您在叫用函式時,可以在瀏覽器中對其 URL 提出 HTTP 要求,或使用 curl 之類的工具。
如果您要繼續進行下一個步驟並新增 Azure 儲存體佇列輸出繫結,請保留您所有的資源,因為在後續的工作還會用到。
否則,請使用下列命令刪除資源群組及其包含的所有資源,以避免產生額外的成本。
az group delete --name AzureFunctionsQuickstart-rg
對本文有任何疑問嗎?
其他資源
文件
-
使用 Visual Studio Code 建立 Python 函式 - Azure Functions
了解如何建立 Python 函式,然後使用 Visual Studio Code 中的 Azure Functions 擴充功能,將本機專案發佈至 Azure Functions 中的無伺服器裝載。
-
適用於 Azure Functions 的 Python 開發人員參考
了解如何使用適用於 Azure Functions 的 Python 程式庫,開發、驗證及部署 Python 程式碼專案至 Azure Functions。
-
使用 Azure Developer CLI 在 Azure 中建立函式
了解如何使用 Azure Developer CLI (AZD) 來建立資源,並將本機專案部署至 Azure 上的彈性使用量方案。