使用 Core Tools 在本機建立和執行 Azure Functions

已完成

Azure Functions Core Tools 可讓您使用命令列,在本機電腦上開發及執行函式。

您想要在自己的本機電腦上建置第一個單利計算機的函式,而不是在 Azure 入口網站的函式編輯器中建置。 您不確定該使用 Visual Studio 還是 Visual Studio Code 之類的開發環境,因為這兩者擴充後都可以直接支援 Azure Functions。 最後,您決定從命令列使用 Core Tools 和基本的文字編輯器。

在本單元中,您會了解如何使用 Core Tools 在本機建立和執行函式。 讓我們先深入了解 Core Tools,再於下個單元的練習中使用這些工具,以逐步引導您使用 Azure Cloud Shell 來完成這些概念。

什麼是 Azure Functions Core Tools?

Azure Functions Core Tools 是獨立的執行階段,也是一組命令列工具,可用於從本機電腦開發、執行及部署函式程式碼。

Core Tools 可支援數個函式相關功能,包括:

  • 產生您在本機開發函式所需的檔案和資料夾。
  • 提供本機執行階段,以便您可以在電腦上測試及偵錯函式。
  • 將函式發佈至 Azure。

使用 Core Tools,您即可從命令列完成這些工作。 使用您想要的任何文字編輯器撰寫程式碼及修改設定。 您也需要 Azure CLI 或 Azure PowerShell 來登入 Azure、建立 Azure 資源,以及部署專案檔。

Core Tools 會封裝為名為 func 的單一命令列公用程式。 如果您從命令列執行 func 而未使用任何其他命令,則會顯示版本資訊和使用指南。 現在您不需要加以閱讀,但其內容如下所示:

A portion of the help text output by func.

Visual Studio 和 Visual Studio Code 兩者都使用 Core Tools 來提供整合的本機偵錯體驗。

以下是有關函式的一些基本概念。

函式應用程式和函式專案

當您在本機開發函式時,您是在「函式專案」中工作。 此專案是一個資料夾,包含了可定義函式的程式碼和設定檔案。 此程式碼專案會部署至 Azure 中的函數應用程式資源。 在函數應用程式執行個體中,所有函式會共用一組通用的設定值和資源。

每個函數應用程式都會以特定語言堆疊為目標,而且每個堆疊都具有自己的特定語言專案需求。 幸運的是,您永遠不需要自行建立函式專案。 您可以使用 Core Tools 以所需語言從頭開始產生函式專案和函式。

Core Tools 版本

因為 Core Tools 包含 Azure Functions 執行階段,您使用的主要 Core Tools 版本必須一律和 Azure 中 Functions 執行階段的主要版本相符。 目前,4.x 版本是 Azure Functions 執行階段的建議版本,也是支援所有語言的唯一版本。 雖然本教學課程討論並使用 Core Tools 4.x 版本,但您不需要在自己的電腦上安裝任何項目。 在本教學課程中,您會改為在瀏覽器中的 Azure Cloud Shell 環境中使用 Core Tools。 Cloud Shell 已經具有正確版本的 Core Tools、Azure CLI 和 Node.js,以及已安裝的程式碼編輯器。

本機開發與 Azure 入口網站開發

雖然 Azure 入口網站確實為您的函式程式碼提供了內建編輯器,但您只能將其用於特定語言堆疊。 您也無法使用入口網站來編輯您在本機開發並部署至 Azure 的函式。 當您開始使用任何本機開發工作流程,即無法使用 Azure 入口網站變更您的函式程式碼。

Core Tools 可支援 Azure Functions 所支援之所有語言堆疊的本機開發。

在本機建立函式

在此進一步了解如何使用 Core Tools 建立函式,並在本機執行函式。 稍後在本教學課程中可了解如何發佈至 Azure。

使用 func init 建立新的函式專案

若要建立新的函式專案,請在命令列上執行 func init

Output from func init creating a JavaScript function project.

func init 會詢問應用程式要使用哪個語言執行階段。 它會視情況量身打造專案資料夾的內容。

在建立新的函式專案時,專案資料夾中包含的檔案會依您選取的語言執行階段而定。 無論您選擇哪個執行階段,都一律會有兩個最重要的專案檔:

  • host.json 會儲存函式應用程式的執行階段設定值,例如記錄選項。 在本機和在 Azure 中執行函式時,都會使用儲存在此檔案中的設定。
  • local.settings.json 會儲存僅在本機使用 Core Tools 執行函數應用程式對其套用的設定值。 此檔案包含兩種設定:
    • 本機執行階段設定:用以設定本機函式執行階段本身。
    • 自訂應用程式設定:您可以根據應用程式的需求來新增和設定。 應用程式中的所有函式都可以存取和使用這些設定。

func init 產生的函式專案不會包含任何函式。 在下一區段中,可了解如何新增一個。

使用 func new 建立新的函式

專案中的每個函式都需要程式碼和設定才能定義其行為。 在函式專案資料夾中執行 func new 會建立新的函式,以及開始開發所需的所有檔案。

Output from func new creating a JavaScript function.

了解您要使用的函式觸發程序類型,以及要為函式提供的名稱之後,func new 會以您的函式專案所選擇的語言,產生完整且可供發佈的起始實作。 起始程式碼會說明如何使用您選取的觸發程序類型,並協助您快速開始使用。 以您自己的實作取代函式的主體,並且您已準備好建置、執行、測試及發佈。

在本教學課程的下一個部分中,您會使用 func new 建立 HTTP 觸發的函式,並修改起始實作以執行單利計算。

在本機執行函式

函式並非可自行執行的程式: 它們必須裝載在主機上。 Azure Functions 主機可讓函式程式碼以外的一切得以運作:它會載入設定、接聽觸發程序和 HTTP 要求、針對函式的撰寫語言啟動背景工作程序、寫入記錄輸出等等。 在 Azure 中,函數應用程式會在啟動時自動執行主機。

您可以使用 Core Tools 來執行您自己的 Azure Functions 主機執行個體,並先在本機嘗試執行函式,再加以發佈。 藉由在發佈函式之前先加以執行,您可以確定您的設定和程式碼能正確載入,並且在不需要 Azure 資源的情況下對函式進行實際的 HTTP 呼叫,而加以測試。

若要在本機啟動函式主機,請從函式專案資料夾執行 func start。 在輸出的結尾,Core Tools 會顯示您可以用於呼叫每個函式的本機 URL。 當主機正在執行時,您可以使用任何可進行 HTTP 呼叫的工具或程式庫 (例如 curl),與您的函式互動。 Core Tools 會即時將主機所產生的任何記錄輸出寫入至終端。

func start output showing a function invocation URL.