使用 JavaScript 建立第一個長期函式

Durable FunctionsAzure Functions 的擴充功能,可讓您在無伺服器環境中撰寫具狀態函式。 此擴充功能會為您管理狀態、設定檢查點和重新啟動。

在本文中,您會了解如何使用 Visual Studio Code Azure Functions 擴充功能,在本機建立及測試 "hello world" 耐久函式。 此函式會協調對其他函式的呼叫並鏈結在一起。 接著會將函式程式碼發佈至 Azure。

重要

本文的內容會根據您在頁面頂端選取器中選擇的 Node.js 程式設計模型而有所不同。 v4 模型已正式推出,旨在為 JavaScript 和 TypeScript 開發人員提供更靈活的直覺式體驗。 如需深入了解 v3 與 v4 之間的差異,請參閱移轉指南

Edge 視窗的螢幕快照。此視窗會顯示在 Azure 中叫用簡單耐久函式的輸出。

必要條件

完成本教學課程:

  • Durable Functions 需要 Azure 儲存體帳戶。 您需要訂閱 Azure。
  • 請確定您已安裝 16.x+ 版的 Node.js
  • 請確定您已安裝 18.x+ 版的 Node.js

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

建立本機專案

在這一節中,您會使用 Visual Studio Code 來建立本機 Azure Functions 專案。

  1. 在 Visual Studio Code 中,按 F1 (或 Ctrl/Cmd+Shift+P)以開啟命令選擇區。 在命令選擇區中,搜尋並選取 Azure Functions: Create New Project...

    Visual Studio Code 命令選擇區的螢幕快照。標題為「Azure Functions:建立新專案...」的命令...反白顯示。

  2. 為您的專案選擇空白資料夾位置,然後選擇 [選取]

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

    提示 Description
    為您的函式應用程式專案選取語言 JavaScript 建立本機Node.js Functions 專案。
    選取 JavaScript 程式設計模型 模型 V3 選擇 V3 程式設計模型。
    選取版本 Azure Functions v4 您只會在尚未安裝 Core Tools 時看到此選項。 在此情況下,Core Tools 會在您第一次執行應用程式時安裝。
    為您專案的第一個函式選取範本 暫時跳過
    選取您要如何開啟專案 在目前視窗中開啟 在您選取的資料夾中重新開啟 VS Code。
  1. 按照提示提供下列資訊:

    提示 Description
    為您的函式應用程式專案選取語言 JavaScript 建立本機Node.js Functions 專案。
    選取 JavaScript 程式設計模型 模型 V4 選擇 V4 程式設計模型。
    選取版本 Azure Functions v4 您只會在尚未安裝 Core Tools 時看到此選項。 在此情況下,Core Tools 會在您第一次執行應用程式時安裝。
    為您專案的第一個函式選取範本 暫時跳過
    選取您要如何開啟專案 在目前視窗中開啟 在您選取的資料夾中重新開啟 VS Code。

如有需要,Visual Studio Code 安裝 Azure Functions Core Tools。 其也會在資料夾中建立函式應用程式專案。 此專案包含 host.jsonlocal.settings.json 組態檔。

package.json根資料夾中也會建立檔案。

安裝 Durable Functions npm 套件

若要在 Node.js 函式應用程式中使用 Durable Functions,您可以使用名為 durable-functions 的程式庫。

若要使用 V4 程式設計模型,您必須安裝 durable-functions 的預覽 v3.x 版本。

  1. 使用 [檢視] 功能表或 Ctrl + Shift + `,在 VS Code 中開啟新的終端機。
  1. 在函式應用程式的根目錄中執行 durable-functions,以安裝 npm install durable-functions npm 套件。
  1. 在函數應用程式的根目錄中執行 npm install durable-functions@preview,以安裝 durable-functions npm 套件預覽版。

建立您的函式

最基本的 Durable Functions 應用程式會包含三個函式:

  • 協調器函式 - 描述用於協調其他函式的工作流程。
  • 活動函式 - 由協調器函式呼叫,可執行工作並選擇性地傳回值。
  • 用戶端函式 - 可啟動協調器函式的一般 Azure 函式。 此範例會使用 HTTP 觸發的函式。

協調器函式

您將使用範本在您的專案中建立耐久函式程式碼。

  1. 在命令選擇區中,搜尋並選取 Azure Functions: Create Function...

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

    提示 Description
    為您的函式選取範本 Durable Functions 協調器 建立 Durable Functions 協調流程
    選擇耐久儲存體型別。 Azure 儲存體 (預設) 選取用於 Durable Functions 的儲存體後端。
    提供函式名稱 HelloOrchestrator 耐久函式的名稱

您已新增協調器來協調活動函式。 開啟 HelloOrchestrator/index.js 以查看協調器函式。 context.df.callActivity 的每個呼叫都會叫用名為 Hello 的活動函式。

接下來,您將新增參考的 Hello 活動函式。

活動函式

  1. 在命令選擇區中,搜尋並選取 Azure Functions: Create Function...

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

    提示 Description
    為您的函式選取範本 Durable Functions 活動 建立活動函式
    提供函式名稱 您好 活動函式的名稱

您已新增協調器所叫用的 Hello 活動函式。 開啟 Hello/index.js ,以查看它以名稱作為輸入並傳回問候語。 活動函式是您在工作流程中執行「實際工作」的地方:例如發出資料庫呼叫或執行一些不具決定性的計算。

最後,您會新增一個啟動協調流程的 HTTP 觸發函式。

用戶端函式 (HTTP 入門)

  1. 在命令選擇區中,搜尋並選取 Azure Functions: Create Function...

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

    提示 Description
    為您的函式選取範本 Durable Functions HTTP 入門版 建立 HTTP 入門函式
    提供函式名稱 DurableFunctionsHttpStart 活動函式的名稱
    授權等級 匿名 基於示範目的,我們允許在沒有驗證的情況下呼叫函式

您已新增可啟動協調流程的 HTTP 觸發函式。 開啟 DurableFunctionsHttpStart/index.js ,以查看它用來 client.startNew 啟動新的協調流程。 然後,該函式會使用 client.createCheckStatusResponse 傳回 HTTP 回應,其中包含可用於監視和管理新協調流程的 URL。

您現在有一個可在本機執行並部署至 Azure 的 Durable Functions 應用程式。

V4 程式設計模型的優點之一是可以撰寫函式的位置很彈性。 在 V4 模型中,您可以使用單一範本,在專案的一個檔案中建立這三個函式。

  1. 在命令選擇區中,搜尋並選取 Azure Functions: Create Function...

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

    提示 Description
    為您的函式選取範本 Durable Functions 協調器 建立具有 Durable Functions 協調流程、活動函式和耐久型用戶端起始函式的檔案。
    選擇耐久儲存體型別 Azure 儲存體 (預設) 選取用於 Durable Functions 的儲存體後端。
    提供函式名稱 hello 用於耐久函式的名稱

開啟 src/functions/hello.js ,以檢視您所建立的函式。

您已建立稱為 helloOrchestrator 的協調器來協調活動函式。 context.df.callActivity 的每個呼叫都會叫用名為 hello 的活動函式。

您還新增了協調器所叫用的 hello 活動函式。 在相同的檔案中,您可以查看是否接受名稱作為輸入並傳回問候語。 活動函式是您在工作流程中執行「實際工作」的地方:例如發出資料庫呼叫或執行一些不具決定性的計算。

最後,您還新增了可啟動協調流程的 HTTP 觸發函式。 在相同的檔案中,您可以看到它使用 client.startNew 來啟動新的協調流程。 然後,該函式會使用 client.createCheckStatusResponse 傳回 HTTP 回應,其中包含可用於監視和管理新協調流程的 URL。

您現在有一個可在本機執行並部署至 Azure 的 Durable Functions 應用程式。

在本機測試函式

Azure Functions Core Tools 可讓您在本機開發電腦上執行 Azure Functions 專案。 第一次從 Visual Studio Code 啟動函式時,系統會提示您安裝這些工具。

  1. 若要測試您的函式,請在 Hello 活動函式程式代碼中設定斷點 (Hello/index.js)。 按 F5 鍵,或從命令選擇區選取 Debug: Start Debugging,以啟動函式應用程式專案。 Core Tools 的輸出會顯示在 [終端機] 面板中。
  1. 若要測試您的函式,請在 hello 活動函式程式代碼中設定斷點(src/functions/hello.js)。 按 F5 鍵,或從命令選擇區選取 Debug: Start Debugging,以啟動函式應用程式專案。 Core Tools 的輸出會顯示在 [終端機] 面板中。

注意

如需有關偵錯的詳細資訊,請參閱 Durable Functions 診斷

  1. Durable Functions 需要執行 Azure 儲存體帳戶。 當 VS Code 提示您選取儲存體帳戶時,請選擇 [選取儲存體帳戶]

    Visual Studio Code 警示視窗的螢幕快照。窗口顯示「若要偵錯,您必須選取記憶體帳戶以供 Azure Functions 執行時間內部使用」。標題為 [選取記憶體帳戶] 的按鈕會反白顯示。

  2. 遵循提示來提供下列資訊,即可在 Azure 中建立新的儲存體帳戶。

    提示 Description
    選取訂閱 您的訂用帳戶名稱 選取您的 Azure 訂用帳戶
    選取儲存體帳戶 建立新的儲存體帳戶
    輸入新儲存體帳戶的名稱 唯一名稱 要建立的儲存體帳戶名稱
    選取資源群組 唯一名稱 要建立的資源群組名稱
    選取位置 region 選取鄰近您的區域
  3. 終端機面板中,複製 HTTP 觸發函式的 URL 端點。

    Visual Studio 程式代碼終端機面板的螢幕快照。終端機會顯示在本機執行 Durable Functions 應用程式的輸出。標題為「終端機」的數據表和 HTTP 入門函式的 URL 會反白顯示。

  1. 使用瀏覽器或 PostmancURL 之類的工具,將 HTTP POST 要求傳送至 URL 端點。 將最後一個區段取代為協調器函式的名稱 (HelloOrchestrator)。 此 URL 應類似於 http://localhost:7071/api/orchestrators/HelloOrchestrator
  1. 使用瀏覽器或 PostmancURL 之類的工具,將 HTTP POST 要求傳送至 URL 端點。 將最後一個區段取代為協調器函式的名稱 (helloOrchestrator)。 此 URL 應類似於 http://localhost:7071/api/orchestrators/helloOrchestrator

回應是 HTTP 函式的初始結果,讓您知道耐久協調流程已成功啟動。 這還不是協調流程的最終結果。 回應包含一些實用的 URL。 讓現在我們查詢協調流程的狀態。

  1. 複製 statusQueryGetUri 的 URL 值並將它貼在瀏覽器的網址列中,然後執行要求。 或者,您也可以繼續使用 Postman 來發出 GET 要求。

    此要求會查詢協調流程執行個體的狀態。 您應該會取得最終回應,內容指出執行個體已完成,並包含耐久函式的輸出或結果。 如下所示:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. 若要停止偵錯,請在 VS Code 中按 Shift + F5

確認函式在本機電腦上正確執行之後,就可以將專案發佈到 Azure。

登入 Azure

您必須先登入 Azure,才能建立 Azure 資源或發布應用程式。

  1. 如果您尚未登入,請選擇 [活動] 列中的 Azure 圖示。 然後在 [資源] 區域中,選擇 [登入 Azure...]

    VS Code 中登入 Azure 視窗的螢幕快照。

    如果您已登入,而且可以看到現有的訂閱,請移至下一節。 如果您尚未擁有 Azure 帳戶,請選擇 [建立 Azure 帳戶...]。學生可以選擇 [建立 Azure 學生版帳戶...]

  2. 當在瀏覽器中收到提示時,請使用您的 Azure 帳戶認證選擇 Azure 帳戶並登入。 如果您建立新的帳戶,可以在帳戶建立之後登入。

  3. 成功登入之後,即可關閉新的瀏覽器視窗。 屬於您 Azure 帳戶的訂用帳戶會顯示在提要欄位中。

在 Azure 中建立函式應用程式

在此區段中,您會在 Azure 訂用帳戶中建立函式應用程式和相關的資源。

  1. 選擇 [活動] 列中的 Azure 圖示。 然後在 [資源] 區域中,選取 + 圖示並選擇 [在 Azure 中建立函數應用程式] 選項。

    在 Azure 訂閱中建立資源群組

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

    提示 選取項目
    選取訂用帳戶 選擇要使用的訂用帳戶。 當您只有一個訂閱顯示在 [資源] 底下時,就不會看到此提示。
    輸入函數應用程式的全域唯一名稱 輸入在 URL 路徑中有效的名稱。 您鍵入的名稱會經過驗證,確定其在 Azure Functions 中是唯一。
    選取執行階段堆疊 選擇您在本機上執行的語言版本。
    選取新資源的位置 若要獲得較佳的效能,請選擇您附近的區域

    該延伸模組會在 [Azure: 活動記錄] 面板顯示正在 Azure 建立的個別資源狀態。

    建立 Azure 資源的記錄

  3. 建立完成時,您的訂閱中會建立下列 Azure 資源。 資源會根據您的函數應用程式名稱命名:

    • 資源群組,這是相關資源的邏輯容器。
    • 標準 Azure 儲存體帳戶,其可維護專案的狀態和其他資訊。
    • 函數應用程式,其提供執行函式程式碼的環境。 函數應用程式可讓您將函式以邏輯單位分組,方便您在相同的主控方案中管理、部署及共用資源。
    • App Service 方案,其定義函數應用程式的基礎主機。
    • 連線至函數應用程式的 Application Insights 執行個體,可追蹤應用程式中函式的使用量。

    建立函式應用程式並套用部署套件之後,即會顯示通知。

    提示

    根據預設,系統會依照您提供的函數應用程式名稱建立函數應用程式所需的 Azure 資源, 並且預設會建立在與函數應用程式相同的新資源群組中。 如果您想自訂這些資源的名稱或重複使用現有的資源,必須改為使用進階建立選項發佈專案

將專案部署至 Azure

重要

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

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

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

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

    [檢視輸出] 視窗的螢幕快照。

在 Azure 中測試您的函式

注意

若要使用 V4 節點程式設計模型,請確定您的應用程式至少是在 4.25 版的 Azure Functions 執行階段上執行。

  1. 從 [輸出] 面板中複製 HTTP 觸發程序的 URL。 呼叫 HTTP 觸發函式的 URL 應採用下列格式:https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. 從 [輸出] 面板中複製 HTTP 觸發程序的 URL。 呼叫 HTTP 觸發函式的 URL 應採用下列格式:https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. 將 HTTP 要求的新 URL 貼到瀏覽器的網址列。 在使用已發佈的應用程式之前,您應會取得如同以往的相同狀態回應。

下一步

您已使用 Visual Studio Code 來建立及發佈 JavaScript 耐久函式應用程式。