快速入門:使用 Visual Studio Code 在 Azure 中建立 Go 或 Rust 函式

在本文中,您會使用 Visual Studio Code 來建立 回應 HTTP 要求的自訂處理常式 函式。 在本機測試程式碼之後,您會將其部署至 Azure Functions 的無伺服器環境。

自訂處理常式可用來透過執行 HTTP 伺服器進程,在任何語言或執行時間中建立函式。 本文同時 支援 Go Rust

完成本快速入門會在您的 Azure 帳戶中產生幾美分或更少成本。

設定您的環境

開始之前,請確定您已符合下列需求:

安裝或更新 Core Tools

適用于 Visual Studio Code 的 Azure Functions 擴充功能會與 Azure Functions Core Tools 整合,讓您可以使用 Azure Functions 執行時間,在 Visual Studio Code 本機執行和偵錯函式。 開始使用之前,最好在本機安裝 Core Tools,或更新現有的安裝以使用最新版本。

在 Visual Studio Code 中,選取 F1 以開啟命令選擇區,然後搜尋並執行 Azure Functions:安裝或更新 Core Tools 命令

此命令會啟動最新版 Core Tools 的套件型安裝。

建立本機專案

在本節中,您會使用 Visual Studio Code 來建立本機 Azure Functions 自訂處理常式專案。 本文稍後,您會將函式程式碼發佈至 Azure。

  1. 選擇活動列中的 Azure 圖示。 然後在 [ 工作區][本機] 區域中,選取 + 按鈕,選擇下拉式清單中的 [ 建立函式 ]。 出現提示時,選擇 [ 建立新專案 ]。

    Screenshot of create a new project window.

  2. 選擇專案工作區的目錄位置,然後選擇 [ 選取 ]。 您應該建立新資料夾,或為專案工作區選擇空白資料夾。 請勿選擇已經屬於工作區一部分的專案資料夾。

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

    提示 選取項目
    選取函式專案的語言 選擇 Custom Handler
    選取專案第一個函式的範本 選擇 HTTP trigger
    提供函式名稱 輸入 HttpExample
    授權等級 選擇 Anonymous ,可讓任何人呼叫函式端點。 若要瞭解授權層級,請參閱 授權金鑰
    選取您想要如何開啟專案 選擇 Open in current window

    使用此資訊,Visual Studio Code 會產生具有 HTTP 觸發程序的 Azure Functions 專案。 您可以在 [總管] 中檢視本機專案檔。

建立和建置您的函式

HttpExample 資料夾中的 function.json 檔案會宣告 HTTP 觸發程式函式。 您可以藉由將處理常式新增並編譯為可執行檔來完成函式。

  1. Ctrl + N macOS 上的 Cmd + N ) 以建立新的檔案。 將它儲存為 function 應用程式根目錄中的 handler.go (與 host.json 位於相同的資料夾中 )。

  2. 在 handler.go ,新增下列程式碼並儲存檔案。 這是您的 Go 自訂處理常式。

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
        "os"
    )
    
    func helloHandler(w http.ResponseWriter, r *http.Request) {
        message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n"
        name := r.URL.Query().Get("name")
        if name != "" {
            message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name)
        }
        fmt.Fprint(w, message)
    }
    
    func main() {
        listenAddr := ":8080"
        if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok {
            listenAddr = ":" + val
        }
        http.HandleFunc("/api/HttpExample", helloHandler)
        log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr)
        log.Fatal(http.ListenAndServe(listenAddr, nil))
    }
    
  3. Ctrl + Shift + ' ,或從 [終端 機] 功能表中選取 [新增終端 機],以在 VS Code 中開啟新的整合式終端機。

  4. 使用下列命令編譯您的自訂處理常式。 名為 handler 的可執行檔 ( handler.exe 在 Windows 上) 會在函式應用程式根資料夾中輸出。

    go build handler.go
    

    VS Code - Build Go custom handler

設定函式應用程式

函式主機必須設定為在啟動時執行自訂處理常式二進位檔。

  1. 開啟 host.json

  2. 在 區 customHandler.description 段中,將 的值 defaultExecutablePath 設定為 handler (在 Windows 上,將其設定為 handler.exe )。

  3. 在 區 customHandler 段中,新增名為 enableForwardingHttpRequest 的屬性,並將其值設定為 true 。 對於只包含 HTTP 觸發程式的函式,此設定可讓您使用一般 HTTP 要求,而不是自訂處理常式 要求承載 ,來簡化程式設計。

  4. 確認區 customHandler 段看起來像這個範例。 儲存檔案。

    "customHandler": {
      "description": {
        "defaultExecutablePath": "handler",
        "workingDirectory": "",
        "arguments": []
      },
      "enableForwardingHttpRequest": true
    }
    

函式應用程式已設定為啟動您的自訂處理常式可執行檔。

在本機執行函式

您可以在本機開發電腦上執行此專案,再發佈至 Azure。

  1. 在整合式終端機中,使用 Azure Functions Core Tools 啟動函式應用程式。

    func start
    
  2. 執行 Core Tools 時,流覽至下列 URL 以執行 GET 要求,其中包含 ?name=Functions 查詢字串。

    http://localhost:7071/api/HttpExample?name=Functions

  3. 傳迴響應,在瀏覽器中看起來如下:

    Browser - localhost example output

  4. 要求的相關資訊會顯示在 終端 機面板中。

    Task host start - VS Code terminal output

  5. Ctrl + C 以停止核心工具。

確認函式可在本機電腦上正常執行之後,即可使用 Visual Studio Code 將專案直接發佈至 Azure。

登入 Azure

在發佈應用程式之前,您必須先登入 Azure。

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

    Screenshot of the sign-in to Azure window within VS Code.

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

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

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

編譯 Azure 的自訂處理常式

在本節中,您會在執行 Linux 的函式應用程式中,將專案發佈至 Azure。 在大部分情況下,您必須先重新編譯二進位檔,並調整組態以符合目標平臺,再將它發佈至 Azure。

  1. 在整合式終端機中,將處理常式編譯為 Linux/x64。 名為 的二進位檔 handler 會在函式應用程式根目錄中建立。

    GOOS=linux GOARCH=amd64 go build handler.go
    

在 Azure 中建立函式應用程式

在本節中,您會在 Azure 訂用帳戶中建立函式應用程式和相關資源。

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

    Create a resource in your Azure subscription

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

    提示 選取項目
    選取訂用帳戶 選擇要使用的訂用帳戶。 當您在 [資源 ] 底下 只有一個訂用帳戶可見時,就不會看到此專案。
    輸入函式應用程式的全域唯一名稱 輸入 URL 路徑中有效的名稱。 您鍵入的名稱會經過驗證,確定其在 Azure Functions 中是唯一。
    選取執行時間堆疊 選擇 [ 自訂處理常式 ]。
    選取新資源的位置 為了提升效能,請選擇 您附近的區域

    擴充功能會在 Azure:活動記錄 面板的 Azure 中建立個別資源時,顯示其狀態。

    Log of Azure resource creation

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

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

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

    提示

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

將專案部署至 Azure

重要

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

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

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

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

    Screenshot of the View Output window.

在 Azure 中執行函數

  1. 返回提要欄位中的 [資源] 區域,依序展開您的訂閱和新函數應用程式,以及 [函式]。 以滑鼠右鍵按一下 [Windows] 或 Ctrl - 按一下 [macOS] 函 HttpExample 式,然後選擇 [ 立即執行函式... ]。

    Screenshot of executing function in Azure from Visual Studio Code.

  2. 在 [輸入要求本文] 中,會看到 { "name": "Azure" } 的要求訊息本文值。 請按 Enter 鍵,將此要求訊息傳送至您的函式。

  3. 當函式在 Azure 執行並傳回回應時,會在 Visual Studio Code 中引發通知。

清除資源

當您繼續下 一個步驟 ,並將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. 選取 [ 刪除資源群組 ],然後遵循指示。

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

如需函式成本的詳細資訊,請參閱 估計使用量方案成本

下一步