在 PowerShell 中建立您的第一個耐久函式

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

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

在 Azure 中執行耐久函式

必要條件

完成本教學課程:

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

建立本機專案

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

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

    建立函式

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

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

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

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

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

設定函式應用程式以使用PowerShell 7

開啟local.settings.json檔案,並確認名為 FUNCTIONS_WORKER_RUNTIME_VERSION 的設定已設定為 ~7。 如果遺漏或設定為另一個值,請更新檔案的內容。

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "~7"
  }
}

建立您的函式

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

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

協調器函式

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

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

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

    提示 Description
    為您的函式選取範本 Durable Functions 協調器 建立 Durable Functions 協調流程
    提供函式名稱 HelloOrchestrator 耐久函式的名稱

您已新增協調器來協調活動函式。 開啟 HelloOrchestrator/run.ps1 以查看協調器函式。 每個對 Cmdlet 的呼叫 Invoke-ActivityFunction 都會叫用名為 Hello的活動函式。

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

活動函式

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

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

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

您已新增協調器所叫用的 Hello 活動函式。 開啟 Hello/run.ps1 ,以查看它以名稱作為輸入並傳回問候語。 活動函式是您執行動作的地方,例如進行資料庫呼叫或執行計算。

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

用戶端函式 (HTTP 入門)

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

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

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

您已新增可啟動協調流程的 HTTP 觸發函式。 開啟 HttpStart/run.ps1 ,以查看其使用 Start-NewOrchestration Cmdlet 來啟動新的協調流程。 然後它會使用 New-OrchestrationCheckStatusResponse Cmdlet 傳回 HTTP 回應,其中包含可用來監視和管理新協調流程的 URL。

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

注意

DF PowerShell 的下一個版本現在處於預覽狀態,而且可以從 PowerShell 資源庫 下載。 瞭解它,以及如何在獨立 PowerShell SDK 指南中試用。 您可以遵循指南的 安裝一節 ,以取得與本快速入門相容的指示,以瞭解如何加以啟用。

在本機測試函式

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

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

    注意

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

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

    建立儲存體帳戶

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

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

    Azure 本機輸出

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

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

  6. 複製 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"
    }
    
  7. 若要停止偵錯,請在 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 中測試您的函式

  1. 從 [輸出] 面板中複製 HTTP 觸發程序的 URL。 呼叫 HTTP 觸發函式的 URL 應採用下列格式:https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  2. 將 HTTP 要求的新 URL 貼到瀏覽器的網址列。 在使用已發佈的應用程式之前,您應會取得如同以往的相同狀態回應。

下一步

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