快速入門: 從命令列在 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 儲存體帳戶,但本文假設您使用的是此模擬器。
安裝 Azure Functions Core Tools
安裝 Core Tools 的建議方式取決於本機開發電腦的作業系統。
下列步驟使用 Windows 安裝程式 (MSI) 來安裝 Core Tools v4.x。 如需其他套件型安裝程式的詳細資訊,請參閱 Core Tools 讀我檔案。
根據您的 Windows 版本,下載並執行 Core Tools 安裝程式:
- v4.x - Windows 64 位元 (建議。Visual Studio Code 偵錯需要 64 位元。)
- v4.x - Windows 32 位元
如果您之前使用 Windows 安裝程式 (MSI) 在 Windows 上安裝 Core Tools,則應該先從 [新增移除程式] 解除安裝舊版本,再安裝最新版本。
使用 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,您必須先建立三個資源:
- 資源群組,其為相關資源的邏輯容器。
- 儲存體帳戶,可維護專案的狀態和其他資訊。
- 函數應用程式,其提供執行函式程式碼的環境。 函式應用程式可對應至您的本機函式專案,並可讓您將函式分組為邏輯單位,以便管理、部署和共用資源。
請使用下列命令來建立這些項目。 Azure CLI 和 PowerShell 均受支援。
如果需要,請登入 Azure。
az login
az login
命令會將您登入 Azure 帳戶。在您選擇的區域中,建立名為
AzureFunctionsQuickstart-rg
的資源群組。az group create --name AzureFunctionsQuickstart-rg --location <REGION>
az group create 命令會建立資源群組。 在上述命令中,使用 az account list-locations 命令所傳回的可用區域代碼,將
<REGION>
取代為您附近的區域。注意
您無法在相同的資源群組中裝載 Linux 和 Windows 應用程式。 如果您有名為
AzureFunctionsQuickstart-rg
的現有資源群組,且其中包含 Windows 函式應用程式或 Web 應用程式,則必須使用不同的資源群組。在您的資源群組和區域中建立一般用途的儲存體帳戶。
az 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 中建立函數應用程式。
az 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
在 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
在 Azure 上叫用函式
由於您的函式會使用 HTTP 觸發程序,因此您在叫用函式時,可以在瀏覽器中對其 URL 提出 HTTP 要求,或使用 curl 之類的工具。
清除資源
如果您要繼續進行下一個步驟並新增 Azure 儲存體佇列輸出繫結,請保留您所有的資源,因為在後續的工作還會用到。
否則,請使用下列命令刪除資源群組及其包含的所有資源,以避免產生額外的成本。
az group delete --name AzureFunctionsQuickstart-rg
下一步
對本文有任何疑問嗎?