教學課程:使用事件訂閱在 Blob 容器上觸發 Azure Functions

如果您使用舊版的 Blob 儲存體觸發程序搭配 Azure Functions,則通常會延遲執行,因為觸發程序會輪詢 Blob 容器以取得更新。 您可以使用相同容器的事件訂閱來觸發函式,以降低延遲。 事件訂閱會將容器中的變更轉送為函式使用事件方格所取用的事件。 您可以使用 Visual Studio Code 搭配最新的 Azure Functions 延伸模組來實作這項功能。

本文說明如何建立以 Blob 新增至容器時所引發的事件為基礎執行的函式。 您將使用 Visual Studio Code 進行本機開發,並在將專案部署至 Azure 之前,先檢查函式是否在本機運作。

  • 在 Azure 儲存體中建立一般儲存體 v2 帳戶。
  • 在 Blob 儲存體中建立容器。
  • 建立由事件驅動的 Blob 儲存體觸發函式。
  • 建立 Blob 容器的事件訂閱。
  • 上傳檔案以在本機使用 ngrok 進行偵錯。
  • 部署至 Azure 並建立篩選的事件訂閱。

重要

本文使用索引標籤來支援多個版本的 Node.js 程序設計模型。 v4 模型已正式推出,旨在為 JavaScript 和 TypeScript 開發人員提供更靈活且更直覺的體驗。 如需 v4 模型運作方式的更多詳細資料,請參閱 Azure Functions Node.js 開發人員指南。 若要深入了解 v3 與 v4 之間的差異,請參閱移轉指南

必要條件

  • ngrok 公用程式,其提供讓 Azure 呼叫本機執行函式的方法。

  • 適用於 Visual Studio Code 的 Azure 儲存體延伸模組,最低版本為 5.x。

注意

適用於 Visual Studio Code 的 Azure 儲存體延伸模組目前為預覽狀態。

建立儲存體帳戶

若要搭配 Azure 儲存體使用事件訂閱,您將需要一般用途 v2 儲存體帳戶。 根據預設,您可以在安裝 Azure 儲存體延伸模組時,從 Visual Studio Code 專案建立此儲存體帳戶。

  1. 在 Visual Studio Code 中開啟命令選擇區 (按 F1),然後輸入 Azure Storage: Create Storage Account...。 依照提示提供下列資訊:

    提示 動作
    輸入新儲存體帳戶的名稱 提供全域唯一名稱。 儲存體帳戶名稱長度必須有 3 至 24 個字元,且只能包含小寫字母和數字。 為了更容易識別,我們將使用相同的資源群組和函數應用程式名稱。
    選取新資源的位置 若要獲得較佳的效能,請選擇您附近的區域

    擴充功能會使用您提供的名稱,建立一般用途 v2 儲存體帳戶。 包含儲存體帳戶的資源群組也會使用相同的名稱。

  2. 建立記憶體帳戶之後,請開啟命令選擇區 (按 F1),然後輸入 Azure Storage: Create Blob Container...。 依照提示提供下列資訊:

    提示 動作
    選取資源 選取您建立的儲存體帳戶。
    輸入新 Blob 容器的名稱 輸入 samples-workitems,也就是程式碼專案中參考的容器名稱。

現在您已建立 Blob 容器,您可以建立在此容器上觸發的函式,以及將事件傳遞至函式的事件訂閱。

建立由 Blob 觸發的函式

當您使用 Visual Studio Code 建立由 Blob 儲存體觸發的函式時,也會建立新的專案。 您必須編輯函式,以使用事件訂閱做為來源,而不是使用定期輪詢的容器。

  1. 在 Visual Studio Code 中開啟您的函數應用程式。

  2. 開啟命令選擇區 (按 F1),然後輸入 Azure Functions: Create Function...,並選取 [建立新專案]

  3. 針對您的專案工作區,選取目錄位置。 請確定您建立新的資料夾,或為專案工作區選擇空白資料夾。

    請勿選擇已屬於工作區一部分的專案資料夾。

  4. 依照提示提供下列資訊:

    提示 動作
    選取語言 選取 C#
    選取 .NET 執行階段 選取 [.NET 6.0 Isolated LTS] 以在隔離的背景工作處理序中執行,或選取 [.NET 6.0 LTS] 以內含式執行。
    為專案的第一個函式選取範本 選取 Azure Blob Storage trigger
    提供函式名稱 輸入 BlobTriggerEventGrid
    提供命名空間 輸入 My.Functions
    從 "local.settings.json" 選取設定 選取 Create new local app setting
    選取儲存體帳戶 從清單中選取您建立的儲存體帳戶。
    這是儲存體帳戶內的路徑,亦即觸發程序所要監視的路徑 接受預設值 samples-workitems
    選取您開啟專案的方式 選取 Open in current window
    提示 動作
    選取語言 選取 Python
    選取 Python 解譯器來建立虛擬環境 選取您慣用的 Python 解譯器。 如果選項未顯示,請輸入 Python 二進位檔的完整路徑。
    為專案的第一個函式選取範本 選取 Azure Blob Storage trigger
    提供函式名稱 輸入 BlobTriggerEventGrid
    從 "local.settings.json" 選取設定 選取 Create new local app setting
    選取儲存體帳戶 從清單中選取您建立的儲存體帳戶。
    這是儲存體帳戶內的路徑,亦即觸發程序所要監視的路徑 接受預設值 samples-workitems
    選取您開啟專案的方式 選取 Open in current window
    提示 動作
    選取語言 選取 Java
    選取 JAVA 的版本 選取 [Java 11] 或 [Java 8],這是函式在 Azure 中執行且您已在本機驗證的 Java 版本。
    提供群組識別碼 選取 com.function
    提供成品識別碼 選取 BlobTriggerEventGrid
    提供版本 選取 1.0-SNAPSHOT
    提供套件名稱 選取 com.function
    提供應用程式名稱 接受以 BlobTriggerEventGrid 開頭的產生名稱。
    選取 JAVA 專案的建置工具 選取 Maven
    選取您開啟專案的方式 選取 Open in current window
    提示 動作
    為您的函式專案選取語言 選取 TypeScript
    選取 TypeScript 程式設計模型 選取 Model V4
    為專案的第一個函式選取範本 選取 Azure Blob Storage trigger
    提供函式名稱 輸入 BlobTriggerEventGrid
    從 "local.settings.json" 選取設定 選取 Create new local app setting
    選取儲存體帳戶 選取建立的儲存體帳戶。
    這是儲存體帳戶內的路徑,亦即觸發程序所要監視的路徑 接受預設值 samples-workitems
    選取您開啟專案的方式 選取 Open in current window
    提示 動作
    為您的函式專案選取語言 選取 JavaScript
    選取 JavaScript 程式設計模型 選取 Model V4
    為專案的第一個函式選取範本 選取 Azure Blob Storage trigger
    提供函式名稱 輸入 BlobTriggerEventGrid
    從 "local.settings.json" 選取設定 選取 Create new local app setting
    選取儲存體帳戶 選取建立的儲存體帳戶。
    這是儲存體帳戶內的路徑,亦即觸發程序所要監視的路徑 接受預設值 samples-workitems
    選取您開啟專案的方式 選取 Open in current window
    提示 動作
    為您的函式專案選取語言 選取 PowerShell
    為專案的第一個函式選取範本 選取 Azure Blob Storage trigger
    提供函式名稱 輸入 BlobTriggerEventGrid
    從 "local.settings.json" 選取設定 選取 Create new local app setting
    選取儲存體帳戶 選取建立的儲存體帳戶。
    這是儲存體帳戶內的路徑,亦即觸發程序所要監視的路徑 接受預設值 samples-workitems
    選取您開啟專案的方式 選取 Open in current window
  5. 出現提示之後,選取 [選取儲存體帳戶]>[新增至工作區]

為了簡單起見,本教學課程會重複使用與您函數應用程式相同的儲存體帳戶。 不過,在實際執行環境中,您可以使用不同的儲存體帳戶搭配您的函數應用程式。 如需詳細資訊,請參閱 Azure Functions 的儲存體考量

升級儲存體擴充功能

若要使用事件方格型部落格儲存體觸發程序,您的函式需要至少儲存體擴充功能 5.x 版。

若要使用必要的擴充功能版本來升級專案,請在 [終端機] 視窗中執行下列命令:dotnet add package

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. 開啟 host.json 專案檔,並檢查 extensionBundle 元素。

  2. 如果 extensionBundle.version 並非至少為 3.3.0 ,請以最新版本取代 extensionBundle

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

更新函式以使用事件

在 BlobTriggerEventGrid.cs 檔案中,將 Source = BlobTriggerSource.EventGrid 新增至 Blob 觸發程序屬性的參數,例如:

[Function("BlobTriggerCSharp")]
public async Task Run([BlobTrigger("samples-workitems/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myBlob, string name, FunctionContext executionContext)
{
    var logger = executionContext.GetLogger("BlobTriggerCSharp");
    logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Size: {myBlob.Length} Bytes");
}

建立函式之後,請在 function.json 組態檔中,將 "source": "EventGrid" 新增至 myBlob 繫結,例如:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. 在產生的 Function.java 檔案中,將內容取代為下列程式碼,並將檔案重新命名為 BlobTriggerEventGrid.java

    package com.function;
    
    import com.microsoft.azure.functions.annotation.*;
    import com.microsoft.azure.functions.*;
    
    /**
    * Azure Functions with Azure Blob trigger.
    */
    public class BlobTriggerEventGrid {
        /**
        * This function will be invoked when a new or updated blob is detected at the specified path. The blob contents are provided as input to this function.
        */
        @FunctionName("BlobTriggerEventGrid")
        @StorageAccount("glengatesteventgridblob_STORAGE")
        public void run(
            @BlobTrigger(name = "content", path = "samples-workitems/{name}", dataType = "binary", source = "EventGrid" ) byte[] content,
            @BindingName("name") String name,
            final ExecutionContext context
        ) {
              context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n  Size: " + content.length + " Bytes");
          }
     }
    
  2. 移除相關聯的單元測試檔案,其已不再適用於新的觸發程序類型。

建立函式之後,請將 source: "EventGrid" 新增至 TypeScript 檔案中的 options 物件,例如:

import { app, InvocationContext } from '@azure/functions';

export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
    context.log(
        `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
    );
}

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: storageBlobTrigger1,
});

建立函式之後,請將 source: "EventGrid" 新增至 JavaScript 檔案中的 options 物件,例如:

const { app } = require('@azure/functions');

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: (blob, context) => {
        context.log(
            `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
        );
    },
});

建立函式之後,請在 function.json 組態檔中,將 "source": "EventGrid" 新增至 myBlob 繫結,例如:

{
    "bindings": [
        {
            "name": "myblob",
            "type": "blobTrigger",
            "direction": "in",
            "path": "samples-workitems/{name}",
            "source": "EventGrid",
            "connection": "<NAMED_STORAGE_CONNECTION>"
        }
    ]
}

啟動本機偵錯

當您在 Azure 入口網站中建立事件訂閱時,事件方格會驗證端點 URL。 此驗證表示,在建立事件訂閱以進行本機偵錯之前,您的函式必須先在本機執行,並透過 ngrok 公用程式啟用遠端存取。 如果您的本機函式程式碼未執行且不能供 Azure 存取,您將無法建立事件訂閱。

判斷 Blob 觸發程序端點

當您的函式在本機執行時,用於事件驅動 Blob 儲存體觸發程序的預設端點看起來會像下列 URL:

http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid
http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid

請儲存此路徑,稍後您將使用此路徑來建立事件訂閱的端點 URL。 如果您針對 Blob 儲存體觸發的函式使用不同名稱,則需要變更查詢字串中的 functionName 值。

注意

由於端點正在處理 Blob 儲存體觸發程序的事件,所以端點路徑會包含 blobs。 而事件方格觸發程序的端點 URL 會在路經中具有 eventgrid

執行 ngrok

若要進入正在機器上進行偵錯的函式,您必須提供讓 Azure 事件方格能夠與本機電腦上所執行函式通訊的方式。

ngrok 公用程式會將外部要求轉送到為本機電腦上特定位址和連接埠隨機產生的 Proxy 伺服器位址。 方式是透過呼叫機器上執行的函式 Webhook 端點。

  1. 使用下列命令啟動 ngrok

    ngrok.exe http http://localhost:7071
    

    公用程式啟動時,命令視窗應如下列螢幕擷取畫面所示:

    Screenshot that shows the Command Prompt after starting the

  2. 複製在執行 ngrok 時所產生的 HTTPS URL。 在使用 ngrok 公開的電腦上,此值可用來判斷 Webhook 端點。

重要

此時,請勿停止 ngrok。 每次您啟動 ngrok 時,就會重新產生具有不同值的 HTTPS URL。 因為無法修改事件訂閱的端點,所以每次執行 ngrok 時,您都必須建立新的事件訂閱。

除非您建立 ngrok 帳戶,否則 ngrok 工作階段時間的上限為兩小時。

建置端點 URL

事件訂閱中使用的端點是由三個不同的部分所組成:前置伺服器名稱、路徑和查詢字串。 這些部分的說明如下表所示:

URL 部分 描述
前置詞和伺服器名稱 當您的函式在本機執行時,具有 https:// 前置詞的伺服器名稱會來自 ngrok 所產生的轉送 URL。 在 localhost URL 中,ngrok URL 會取代 http://localhost:7071。 在 Azure 中執行時,您會改用已發佈的函式應用程式伺服器,其格式通常是 https://<FUNCTION_APP_NAME>.azurewebsites.net
路徑 端點 URL 的路徑部分來自稍早複製的 localhost URL,對於 Blob 儲存體觸發程序而言,其看起來會像 /runtime/webhooks/blobs。 事件方格觸發程序的路徑會是 /runtime/webhooks/EventGrid
查詢字串 針對包括 .NET 隔離 functionName=Host.Functions.BlobTriggerEventGrid 參數在內的所有語言,除了內含式 .NET (其應為查詢字串中的 functionName=BlobTriggerEventGrid),會設定處理事件的函式名稱。 如果您針對函式使用不同的名稱,則必須變更此值。 在本機執行時不需要存取金鑰。 在 Azure 中執行時,您也需要在 URL 中包含 code= 參數,這會包含您可以從入口網站取得的金鑰。

下列螢幕擷取畫面顯示使用名為 BlobTriggerEventGrid 的 Blob 儲存體觸發程序時,最終端點 URL 會如何呈現的範例:

Endpoint selection

開始偵錯

執行 ngrok 後,請啟動您的本機專案,如下所示:

  1. 在函數中處理記錄的程式碼行上,設定中斷點。

  2. 啟動偵錯工作階段。

    開啟新的終端並執行下列 mvn 命令來啟動偵錯工作階段。

    mvn azure-functions:run -DenableDebug
    

    按下 F5 啟動偵錯工作階段。

當您的程式碼已執行且 ngrok 轉送要求之後,您就可以建立 Blob 容器的事件訂閱。

建立事件訂閱

由 Azure 事件方格提供支援的事件訂閱會根據連結 Blob 容器中的變更引發事件。 此事件接著會傳送至函式觸發程式上的 Webhook 端點。 建立事件訂閱之後,就無法變更端點 URL。 這表示當您完成本機偵錯 (或重新啟動 ngrok) 之後,您必須刪除事件訂閱後再重新建立。

  1. 在 Visual Studio Code 的 [活動] 列中,選取 Azure 圖示。 在 [資源] 中,依序展開您的訂閱和儲存體帳戶,以滑鼠右鍵按一下您稍早建立的儲存體帳戶,然後選取 [在入口網站中開啟]

  2. 登入 Azure 入口網站 並記下儲存體帳戶的資源群組。 您將在同一個群組中建立其他資源,以便在完成時更輕鬆地清除資源。

  3. 從左側功能表中選取 [事件] 選項。

    Add storage account event

  4. 在 [事件] 視窗中,選取 [+ 事件訂閱] 按鈕,並將下表中的值提供給 [基本] 索引標籤:

    設定 建議的值 名描述
    名稱 myBlobLocalNgrokEventSub 識別事件訂閱的名稱。 您可以使用名稱快速尋找事件訂閱。
    事件結構描述 事件格線結構描述 使用事件的預設結構描述。
    系統主題名稱 samples-workitems-blobs 代表容器的主題名稱。 此主題會隨著第一個訂閱建立,將用於未來的事件訂閱。
    篩選至事件類型 已建立 Blob
    端點類型 Webhook Blob 儲存體觸發程序會使用 Webhook 端點。 您將會針對事件方格觸發程序使用 Azure Functions。
    端點 以 ngrok 為基礎的 URL 端點 使用您稍早決定且以 ngrok 為基礎的 URL 端點。
  5. 選取 [確認選取] 以驗證端點 URL。

  6. 選取 [建立] 以建立事件訂閱。

將檔案上傳至容器

事件訂閱已就緒,且程式碼專案和 ngrok 也仍在執行中,您現在可以將檔案上傳至儲存體容器以觸發函式。 您可以使用 Visual Studio Code,將檔案從您的電腦上傳至 Blob 儲存體容器。

  1. 在 Visual Studio Code 中開啟命令選擇區 (按 F1),然後輸入 Azure Storage: Upload Files...

  2. 在 [開啟] 對話方塊中選擇檔案 (最好是不會太大的二進位影像檔),然後選取 [上傳]

  3. 提示中會提供下列資訊:

    設定 建議的值 描述
    選取資源 儲存體帳戶名稱 選擇您在上一個步驟中建立的儲存體帳戶名稱。
    選取資源類型 Blob 容器 您正在上傳至 Blob 容器。
    選取 Blob 容器 samples-workitems 此值是您在上一個步驟中建立的容器名稱。
    輸入此上傳的目的地目錄 預設值 直接接受預設值 /,即容器根目錄。

此命令會將檔案從您的電腦上傳至 Azure 中的儲存體容器。 此時,您正在執行中的 ngrok 執行個體應該會回報已轉送要求。 您也會在偵錯工作階段的 func.exe 輸出中看到函式已啟動。 希望此時,您的偵錯工作階段正在您設定中斷點的位置上等候。

將專案發佈至 Azure

現在您已在本機成功驗證函式程式碼,接下來就可以將專案發佈至 Azure 中的新函式應用程式。

建立函數應用程式

下列步驟會建立您在 Azure 中所需的資源,並部署專案檔。

  1. 在命令選擇區中,輸入 Azure Functions:在 Azure 中建立函式應用程式...(進階)

  2. 按照提示提供下列資訊:

    提示 選取項目
    為新函式應用程式輸入全域唯一名稱。 輸入可識別您函式應用程式的全域唯一名稱,然後選取 Enter 鍵。 函式應用程式名稱的有效字元為 a-z0-9-。 記下此名稱;您稍後建置新的端點 URL 時會用到。
    選取執行階段堆疊。 選擇您在本機上執行的語言版本。
    選取 OS。 選擇 Linux 或 Windows。 Python 應用程式必須在 Linux 上執行。
    選取新資源的資源群組。 選擇您使用儲存體帳戶建立的資源群組名稱 (您先前已在入口網站中記下該名稱)。
    選取新資源的位置。 區域中選擇位置,此位置應靠近您或靠近函式可存取的其他服務。
    選取主控方案。 針對無伺服器的「使用量方案裝載」選取 [使用量],這只有在函式執行時才會向您收取費用。
    選取儲存體帳戶。 選擇您正在使用的現有儲存體帳戶名稱。
    選取應用程式的 Application Insights 資源。 選擇 [建立新的 Application Insights 資源],並在系統提示時輸入用來儲存函式執行階段資料的執行個體名稱。

    建立函式應用程式並套用部署套件之後,即會顯示通知。 在通知中選取 [檢視輸出],即可檢視建立和部署結果,包括您所建立的 Azure 資源。

部署函式程式碼

重要

部署至現有的函數應用程式一律會覆寫該應用程式在 Azure 中的內容。

  1. 在 Azure 活動的 [資源] 區域中,找出您剛才建立的函數應用程式資源,以滑鼠右鍵按一下該資源,然後選取 [部署至函數應用程式...]

  2. 當系統提示您覆寫先前的部署時,請選取 [部署],將函式程式碼部署至新的函數應用程式資源。

  3. 部署完成時,選取 [檢視輸出] 即可檢視建立和部署結果,包括您所建立的 Azure 資源。 如果您錯過通知,請選取右下角的鈴鐺圖示,以再次查看。

    Screenshot of the View Output window.

發佈應用程式設定

因為 local.settings.json 的本機設定不會自動發佈,所以您現在必須上傳這些設定,讓函式在 Azure 中正確執行。

在命令選擇區中,輸入 Azure Functions:上傳本機設定...,然後在 [選取資源] 提示中,選擇函式應用程式的名稱。

重新建立事件訂閱

現在函式應用程式已在 Azure 中執行,您需要建立新的事件訂閱。 這個新的事件訂閱會使用 Azure 中函式的端點。 您也會將篩選新增至事件訂閱,讓函式只有在 JPEG (.jpg) 檔案新增至容器時才會觸發。 在 Azure 中,端點 URL 也會包含存取金鑰,其有助於封鎖事件方格以外的執行者存取端點。

取得 Blob 延伸模組金鑰

  1. 在 Visual Studio Code 的 [活動] 列中,選取 Azure 圖示。 在 [資源] 中,依序展開您的訂閱和函式應用程式,以滑鼠右鍵按一下您建立的函式應用程式,然後選取 [在入口網站中開啟]

  2. 在左側功能表中的 [函式] 底下,選取 [應用程式金鑰]

  3. 在 [系統金鑰] 底下,選取名為 blobs_extension 的金鑰,然後複製金鑰

您將在新端點 URL 的查詢字串中包含此值。

建置端點 URL

根據下列範例建立 Blob 儲存體觸發程序的新端點 URL:

https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>
https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>

在此範例中,以函式應用程式的名稱取代 <FUNCTION_APP_NAME>,並以您從入口網站取得的值取代 <BLOB_EXTENSION_KEY>。 如果您針對函式使用不同的名稱,您也必須視需要變更 functionName 查詢字串。

建立篩選的事件訂閱

由於無法變更事件訂閱的端點 URL,因此您必須建立新的事件訂閱。 此時您也應該刪除舊的事件訂閱,因為無法重複使用。

這次,您會在事件訂閱中包含篩選準則,僅讓 JPEG 檔案 (*.jpg) 可觸發函式。

  1. 在 Visual Studio Code 的 [活動] 列中,選取 Azure 圖示。 在 [資源] 中,依序展開您的訂閱和儲存體帳戶,以滑鼠右鍵按一下您稍早建立的儲存體帳戶,然後選取 [在入口網站中開啟]

  2. Azure 入口網站中,從左側功能表中選取 [事件] 選項。

  3. 在 [事件] 視窗中,選取舊的 ngrok 型事件訂閱,然後選取 [刪除]>[儲存]。 此動作會移除舊的事件訂閱。

  4. 選取 [+ 事件訂閱] 按鈕,並將下表中的值提供給 [基本] 索引標籤:

    設定 建議的值 名描述
    名稱 myBlobAzureEventSub 識別事件訂閱的名稱。 您可以使用名稱快速尋找事件訂閱。
    事件結構描述 事件格線結構描述 使用事件的預設結構描述。
    篩選至事件類型 已建立 Blob
    端點類型 Webhook Blob 儲存體觸發程序會使用 Webhook 端點。 您將會針對事件方格觸發程序使用 Azure Functions。
    端點 您的新 Azure URL 端點 使用您所建置且其中包含金鑰值的 URL 端點。
  5. 選取 [確認選取] 以驗證端點 URL。

  6. 選取 [篩選] 索引標籤,在 [主旨篩選] 下核取 [啟用主旨篩選],在 [主旨結尾] 中輸入 .jpg。 這會將事件篩選為僅限 JPEG 檔案。

    Add filter

  7. 選取 [建立] 以建立事件訂閱。

在 Azure 中驗證函式

透過正在執行 Azure 的整個拓撲,您現在可以驗證一切是否正常運作。 由於您已在入口網站中,因此最簡單的方式是從該處上傳檔案。

  1. 在入口網站的儲存體帳戶頁面中,選取 [容器],然後選取您的 samples-workitems 容器。

  2. 選取 [上傳] 按鈕以開啟右側的上傳頁面,瀏覽本機檔案系統以尋找要上傳的 .jpg 檔案,然後選取 [上傳] 按鈕以上傳 Blob。 現在,您可以確認您的函式是否根據容器上傳事件執行。

  3. 在您的儲存體帳戶中,返回 [事件] 頁面,選取 [事件訂閱],您應該會看到事件已傳遞。

  4. 回到入口網站中的函式應用程式頁面,在 [函式] 下選取 [函式],選擇您的函式,您應該會看到數量至少為一個的執行總數

  5. 在 [開發人員] 底下選取 [監視],您應該會看到從成功函式執行撰寫的追蹤。 Application Insights 處理事件時,可能會有五分鐘的延遲。

清除資源

當您繼續進行下一個步驟並將 Azure 儲存體佇列繫結新增至您的函式時,您必須保留所有資源,以您所完成的工作為基礎。

否則,您可以使用下列步驟來刪除函式應用程式及其相關資源,以避免產生任何額外的成本。

  1. 在 Visual Studio Code 中,按 F1 開啟命令選擇區。 在命令選擇區中,搜尋並選取 Azure: Open in portal

  2. 選擇您的函數應用程式,並按下 Enter。 函式應用程式頁面會在 Azure 入口網站中開啟。

  3. 在 [概觀] 索引標籤中,選取 [資源群組] 旁的具名連結。

    Screenshot of select the resource group to delete from the function app page.

  4. 在 [資源群組] 分頁上,檢閱所含資源的清單,並確認這些是您想要刪除的項目。

  5. 選取 [刪除資源群組],並遵循指示。

    刪除需要幾分鐘的時間。 完成時,通知會出現幾秒鐘的時間。 您也可以選取分頁頂端的鈴鐺圖示以檢視通知。

若要深入了解 Functions 成本,請參閱估計使用量方案成本

下一步