分享方式:


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

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

自訂處理常式可用來透過執行 HTTP 伺服器程序,以任何語言或執行階段建立函式。 本文同時支援 GoRust

完成本快速入門後,您的 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 的套件型安裝,或更新現有的套件型安裝。 如果您沒有在本機電腦上安裝 npm 或 Homebrew,您必須改為手動安裝或更新 Core Tools

建立本機專案

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

  1. 在 Visual Studio Code 中,按 F1 以開啟命令選擇區,然後搜尋並執行命令 Azure Functions: Create New Project...

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

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

    提示 選取項目
    為您的函式專案選取語言 選擇 Custom Handler
    為專案的第一個函式選取範本 選擇 HTTP trigger
    提供函式名稱 輸入 HttpExample
    授權等級 選擇 Anonymous,讓任何人都能呼叫您的函式端點。 如需詳細資訊,請參閱授權層級
    選取您希望專案的開啟方式 選擇 Open in current window

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

建立和建置您的函式

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

  1. Ctrl + N (macOS 上為 Cmd + N) 以建立新檔案。 在函式應用程式根目錄中將它儲存為 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 的可執行檔 (Windows 上為 handler.exe) 會在函式應用程式根資料夾中輸出。

    go build handler.go
    

    VS Code - 建置 Go 自訂處理常式

設定函式應用程式

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

  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. 此時會傳回回應,其內容在瀏覽器中會顯示如下:

    瀏覽器 - localhost 範例輸出

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

    工作主機啟動 - VS Code 終端機輸出

  5. Ctrl + C 來停止 Core Tools。

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

登入 Azure

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

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

    在 Visual Studio Code 中登入 Azure 視窗的螢幕擷取畫面。

    如果您已登入,而且可以看到現有的訂閱,請移至下一節。 如果您尚未擁有 Azure 帳戶,請選取 [建立 Azure 帳戶]。 學生可以選取 [建立 Microsoft 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 中建立函數應用程式] 選項。

    在 Azure 訂閱中建立資源群組

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

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

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

    建立 Azure 資源的記錄

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

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

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

    提示

    根據預設,系統會根據您為函數應用程式輸入的名稱來建立函數應用程式所需的 Azure 資源。 根據預設,資源會以在相同的新資源群組中的函式應用程式來建立。 如果您想要自訂相關聯資源的名稱或重複使用現有的資源,請使用進階建立選項來發佈專案

將專案部署至 Azure

重要

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

  1. 在命令選擇區中,輸入並選取 [Azure Functions:部署至函式應用程式]

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

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

    [檢視輸出] 視窗的螢幕擷取畫面。

在 Azure 中執行函數

  1. F1 鍵以顯示命令選擇區,然後搜尋並執行命令 Azure Functions:Execute Function Now...。 如果出現提示,請選取訂用帳戶。

  2. 選取新的函數應用程式資源與 HttpExample 作為函數。

  3. 在 [輸入要求本文] 中並輸入 { "name": "Azure" },然後按下 Enter 向您的函數傳送要求訊息。

  4. 當函數在 Azure 中執行時,回應會顯示在通知區域中。 展開通知以檢閱完整的回應。

清除資源

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

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

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

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

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

    從函數應用程式頁面選取要刪除的資源群組螢幕擷取畫面。

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

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

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

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

下一步