共用方式為


Azure Functions 案例

通常,你會建立能對一連串關鍵事件做出反應的系統。 無論你是在建置網頁 API、回應資料庫變更,或處理事件串流或訊息,都可以使用 Azure Functions 來實作這些系統。

在許多情況下,函式會與雲端服務整合,以提供功能豐富的實作。 以下列表展示了 Azure 函式常見(但絕非完整)的情境。

在文章頂端選取開發語言。

處理檔案上傳

你可以用多種方式使用函式來處理檔案進出 blob 儲存容器。 若要深入了解在 Blob 容器上觸發的選項,請參閱最佳做法文件中的使用 blob

例如,在零售解決方案中,合作夥伴系統可以將產品目錄資訊以檔案的形式提交至 Blob 儲存體。 你可以使用 blob 觸發函式,在上傳檔案的同時,驗證、轉換並處理這些檔案進入主系統。

使用 Azure Functions 的檔案上傳程式圖表。

下列教學課程會使用 Blob 觸發程序 (事件方格型),來處理 Blob 容器中的檔案:

例如,在 Blob 容器上使用 Blob 觸發程序搭配事件訂閱:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

即時串流和事件處理

雲端應用程式、物聯網裝置與網路裝置產生並收集大量遙測資料。 Azure Functions 可以將資料以近乎即時的方式處理,作為熱路徑,然後將其儲存在 Azure Cosmos DB 中,以供分析儀表板使用。

函式也可以使用低延遲事件觸發程序,例如事件方格,以及 SignalR 等即時輸出,以近乎即時的方式處理資料。

使用 Azure Functions 的即時串流處理示意圖。

例如,您可以使用事件中樞觸發程序從事件中樞讀取,以及使用輸出繫結,在解除事件批次和轉換事件之後寫入事件中樞:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionSetting",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionSetting")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

機器學習和人工智慧

Azure Functions 提供與 AI 和 Azure 服務整合的無伺服器計算資源,以簡化建置雲端裝載的智慧型應用程式。 你可以使用 Functions 程式設計模型來建立並架設遠端模型內容協定(MCP)伺服器,並實作各種 AI 工具。 欲了解更多資訊,請參閱 工具與 MCP 伺服器

Azure OpenAI 綁定擴充功能讓你能將 Azure OpenAI 服務中的 AI 特性與行為,例如檢索增強生成(RAG)整合到函式程式碼執行中。 欲了解更多資訊,請參閱 檢索增強生成

函數也可以呼叫 TensorFlow 模型或 Azure AI 服務,以處理和分類影像串流。

使用 Azure Functions 的機器學習和 AI 流程圖。

如需詳細資訊,請參閱 在 Azure Functions 中使用 AI 工具和模型

執行排程的工作

函式可讓您根據所定義的 cron 排程來執行程式碼。

請參考 Azure 入口網站中「建立一個按排程執行的功能」。

例如,你可以每15分鐘分析一次金融服務客戶資料庫是否有重複條目,以避免多通通訊寄給同一客戶。

排程工作的圖表,其中一個函式根據商業邏輯每隔 15 分鐘清理資料庫,去除重複條目。

範例請參考以下程式碼片段:

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

建置可調整的 Web API

HTTP 觸發的函式會定義 HTTP 端點。 這些端點會執行函式程式碼,以直接或使用繫結延伸模組連線到其他服務。 您可以將端點組合為 Web 型 API。

您也可以使用 HTTP 觸發的函式端點作為 Webhook 整合,例如 GitHub Webhook。 如此一來,您就可以建立處理來自 GitHub 事件之資料的函式。 更多資訊請參閱「 使用 Azure Functions 的 webhook 監控 GitHub 事件」。

使用 Azure Functions 處理 HTTP 要求的圖表。

範例請參考以下程式碼片段:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

建置無伺服器工作流程

函式通常作為無伺服器工作流程拓撲中的計算元件,例如 Logic Apps 的工作流程。 您也可以使用 Durable Functions 延伸模組,來建立長時間執行的協調流程。 如需詳細資訊,請參閱 Durable Functions 概觀

使用 Azure Functions 之一系列特定無伺服器工作流程的組合圖表。

回應資料庫變更

部分流程在儲存資料變更時需要記錄、稽核或其他操作。 函式觸發程序提供一個好方法,可在資料發生變更以初始化這類作業時收到通知。

用來回應資料庫變更之函式的圖表。

建立可靠的訊息系統

您可以使用 Functions 搭配 Azure 傳訊服務,來建立進階事件驅動傳訊解決方案。

例如,您可以使用 Azure 儲存體佇列上的觸發程序,將一系列函式執行鏈結在一起。 或使用服務匯流排佇列和觸發程序作為線上訂購系統。

可靠訊息系統中 Azure Functions 的圖表。

這些文章說明如何將輸出寫入記憶體佇列:

這些文章示範如何從 Azure 服務匯流排佇列或主題觸發。

下一步