快速入門:從命令列在 Azure 中建立 C# 函式

在本文中,您會使用命令列工具建立可回應 HTTP 要求的 C# 函式。 在本機測試程式碼之後,您可以將其部署到 Azure Functions 的無伺服器環境。

本文會建立一個在 .NET 8 上以隔離式背景工作處理序執行的 HTTP 觸發函式。 如需 C# 函式支援的 .NET 版本資訊,請參閱支援的版本。 這也是本文的 Visual Studio Code 型版本

完成本快速入門後,您的 Azure 帳戶中會產生幾美分或更少的少許費用。

設定您的本機環境

開始之前,您必須具備下列條件:

您也需要含有效訂用帳戶的 Azure 帳戶。 免費建立帳戶

安裝 Azure Functions Core Tools

安裝 Core Tools 的建議方式取決於本機開發電腦的作業系統。

下列步驟使用 Windows 安裝程式 (MSI) 來安裝 Core Tools v4.x。 如需其他套件型安裝程式的詳細資訊,請參閱 Core Tools 讀我檔案

根據您的 Windows 版本,下載並執行 Core Tools 安裝程式:

如果您之前使用 Windows 安裝程式 (MSI) 在 Windows 上安裝 Core Tools,則應該先從 [新增移除程式] 解除安裝舊版本,再安裝最新版本。

建立本機函式專案

在 Azure Functions 中,函式專案是包含一或多個個別函式的容器,而每個函式分別會回應特定的觸發程序。 專案中的所有函式會共用相同的本機和裝載設定。 在本節中,您將建立包含單一函式的函式專案。

  1. 執行 func init 命令,以使用指定的執行階段在名為 LocalFunctionProj 的資料夾中建立函式專案:

    func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
    
  2. 瀏覽至專案資料夾:

    cd LocalFunctionProj
    

    此資料夾會包含專案的各種檔案,包括名為 local.settings.jsonhost.json 的組態檔。 由於 local.settings.json 可能會包含從 Azure 下載的秘密,因此 .gitignore 檔案依預設會將該檔案排除在原始檔控制以外。

  3. 使用下列命令,將函式新增至您的專案,其中 --name 引數是函式的唯一名稱 (HttpExample),而 --template 引數可指定函式的觸發程序 (HTTP)。

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new 會建立 HttpExample.cs 程式碼檔案。

(選擇性) 檢查檔案內容

如有需要,您可以跳到在本機執行函式,並於稍後再檢查檔案內容。

HttpExample.cs

HttpExample.cs 包含 Run 方法,可將 req 變數中的要求資料當做 HttpRequest 物件接收。 該參數會以 HttpTriggerAttribute 修飾,以定義觸發程序行為。

using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace Company.Function
{
    public class HttpExample
    {
        private readonly ILogger<HttpExample> _logger;

        public HttpExample(ILogger<HttpExample> logger)
        {
            _logger = logger;
        }

        [Function("HttpExample")]
        public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
        {            
            _logger.LogInformation("C# HTTP trigger function processed a request.");

            return new OkObjectResult("Welcome to Azure Functions!");
        }
    }
}

傳回物件是 IActionResult 物件,其中包含傳回 HTTP 回應的資料。

若要深入了解,請參閱 Azure Functions HTTP 觸發程序和繫結

在本機執行函式

  1. 啟動 LocalFunctionProj 資料夾中的本機 Azure Functions 執行階段主機,以執行您的函式:

    func start
    

    在輸出的結尾處,應該會出現下列幾行:

     ...
    
     Now listening on: http://0.0.0.0:7071
     Application started. Press Ctrl+C to shut down.
    
     Http Functions:
    
             HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
     ...
    
     

    注意

    如果 HttpExample 未如上顯示,表示您可能不是從專案的根資料夾啟動主機。 在此情況下,請使用 Ctrl+C 停止主機,瀏覽至專案的根資料夾,然後再次執行先前的命令。

  2. HttpExample 函式的 URL 從此輸出複製到瀏覽器,並瀏覽至函式 URL,您應該會收到歡迎使用 Azure Functions 的訊息。

  3. 完成作業後,請使用 Ctrl+C 並選擇 y 以停止函式主機。

為您的函式建立支援的 Azure 資源

若要將函式程式碼部署至 Azure,您必須先建立三個資源:

  • 資源群組,這是相關資源的邏輯容器。
  • 儲存體帳戶,用來維護函數的狀態和其他資訊。
  • 函數應用程式,其提供執行函式程式碼的環境。 函式應用程式可對應至您的本機函式專案,並可讓您將函式分組為邏輯單位,以便管理、部署和共用資源。

請使用下列命令來建立這些項目。 Azure CLI 和 PowerShell 均受支援。

  1. 如果您尚未登入 Azure,請於此時登入:

    az login
    

    az login 命令會將您登入您的 Azure 帳戶。

  2. 在您選擇的區域中,建立名為 AzureFunctionsQuickstart-rg 的資源群組:

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    az group create 命令會建立資源群組。 在上述命令中,使用 az account list-locations 命令所傳回的可用區域代碼,將 <REGION> 取代為您附近的區域。

  3. 在您的資源群組和區域中建立一般用途的儲存體帳戶:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
    

    az storage account create 命令會建立儲存體帳戶。

    在上述範例中,請將 <STORAGE_NAME> 取代為適合您且在 Azure 儲存體中是唯一的名稱。 名稱只能包含 3 到 24 個字元的數字和小寫字母。 Standard_LRS 會指定受 Functions 支援的一般用途帳戶。

重要

儲存體帳戶可用來儲存重要的應用程式資料,有時還包含應用程式的程式碼本身。 您應該限制其他應用程式和使用者存取儲存體帳戶。

  1. 在 Azure 中建立函式應用程式:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    az functionapp create 命令會在 Azure 中建立函式應用程式。

    在上一個範例中,將 <STORAGE_NAME> 取代為您在上一個步驟中使用的帳戶名稱,並將 <APP_NAME> 取代為適合您的全域唯一名稱。 <APP_NAME> 也是函式應用程式的預設 DNS 網域。

    此命令會依據 Azure Functions 使用方案,建立在您指定的語言執行階段中執行的函式應用程式,而此應用程式在此處產生的使用量是免費的。 此命令也會在相同的資源群組中建立建立關聯的 Azure Application Insights 執行個體,您可將其用於監視函數應用程式和檢視記錄。 如需詳細資訊,請參閱監視 Azure Functions。 在您啟用此執行個體之前,並不會產生任何成本。

將函式專案部署至 Azure

在 Azure 中成功建立函式應用程式之後,您就可以開始使用 func Azure functionapp publish 命令部署本機函式專案。

在下列範例中,請將 <APP_NAME> 取代為您的應用程式名稱。

func azure functionapp publish <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 觸發程序並且支援 GET 要求,所以您會藉由對其 URL 提出 HTTP 要求來加以叫用。 在瀏覽器中執行是完成這項操作最簡單的方式。

將發佈命令的輸出中顯示的完整叫用 URL 複製到瀏覽器網址列中。 當您瀏覽至此 URL 時,瀏覽器應該會顯示與您在本機執行函式時類似的輸出。


執行下列命令,以檢視近即時的串流記錄:

func azure functionapp logstream <APP_NAME> 

在個別終端機視窗或瀏覽器中,再次呼叫遠端函式。 Azure 中的函式執行會有詳細資訊記錄顯示在終端機中。

清除資源

如果您要繼續進行下一個步驟並新增 Azure 儲存體佇列輸出繫結,請保留您所有的資源,因為在後續的工作還會用到。

否則,請使用下列命令刪除資源群組及其包含的所有資源,以避免產生額外的成本。

az group delete --name AzureFunctionsQuickstart-rg

下一步

連線至 Azure Cosmos DB (部分機器翻譯)