使用 Visual Studio 將函式 連線 Azure 儲存體

Azure Functions 可讓您直接將 Azure 服務和其他資源連線至函式,而不需要自行撰寫整合程式碼。 這些繫結同時代表輸入和輸出,會宣告於函式定義內。 繫結中的資料會提供給函式作為參數。 「觸發程序」是一種特殊的輸入繫結。 雖然函式只有一個觸發程序,但可以有多個輸入和輸出繫結。 若要深入了解,請參閱 Azure Functions 觸發程序和繫結概念

本文說明如何使用 Visual Studio 將您在上一個快速入門文章中建立的函式連線到 Azure 儲存體。 您新增至此函式的輸出繫結,會將資料從 HTTP 要求寫入至位於 Azure 佇列儲存體佇列中的訊息。

大部分的繫結都需要函式用來存取繫結服務的預存連接字串。 若要簡化,您可以使用函式應用程式所建立的 儲存體 帳戶。 此帳戶的連線已儲存在名為 AzureWebJobsStorage 的應用程式設定中。

必要條件

開始本文之前,您必須:

  • 完成 Visual Studio 快速入門的第 1 部分。
  • 安裝 Azure 儲存體總管。 需使用儲存體總管這項工具來檢查由輸出繫結所產生的佇列訊息。 儲存體總管支援安裝在以 macOS、Windows 和 Linux 為基礎的作業系統上。
  • 從 Visual Studio 登入您的 Azure 訂用帳戶。

下載函式應用程式設定

在上一個快速入門文章中,您已在 Azure 中建立函式應用程式,以及必要的 儲存體 帳戶。 此帳戶的連接字串會安全地儲存在 Azure 的應用程式設定中。 在本文中,您會將訊息寫入至相同帳戶中的儲存體佇列。 若要在本機執行函式時連線到您的 儲存體 帳戶,您必須將應用程式設定下載到local.settings.json檔案。

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案並選取 [發行]

  2. 在 [裝載] 下的 [發佈] 索引標籤中,展開三個點 (...),然後選取 [管理 Azure App 服務 設定]。

    編輯應用程式設定

  3. AzureWebJobs 儲存體 下,將 [遠端字串] 值複製到 [本機],然後選取 [確定]。

使用連線設定的記憶體系 AzureWebJobsStorage 結現在可以在本機執行時連線到佇列記憶體。

註冊繫結延伸模組

由於您使用佇列記憶體輸出系結,因此在執行專案之前,您需要安裝 儲存體 系結延伸模組。 除了 HTTP 和計時器觸發程序以外,繫結皆會以擴充套件的形式實作。

  1. 從 [工具] 功能表中,選取 [NuGet 套件管理員]> [套件管理員主控台]

  2. 在控制台中,執行下列 Install-Package 命令來安裝 儲存體 擴充功能:

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

現在,您可以將儲存體輸出繫結新增至您的專案。

新增輸出繫結

在 C# 專案中,是將繫結定義為函式方法上的繫結屬性。 確切的定義取決於您的應用程式是否在程序中執行 (C# 類別庫),還是處於隔離的背景工作處理序中。

開啟 HttpExample.cs 專案檔,並新增下列 MultiResponse 類別:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

MultiResponse 類別可讓您寫入名為 outqueue 的儲存體佇列和 HTTP 成功訊息。 多個訊息可以傳送至佇列,因為 QueueOutput 屬性會套用至字串陣列。

Connection 屬性會設定儲存體帳戶的連接字串。 在此情況下,您可以省略 Connection,因為您已經正在使用預設的儲存體帳戶。

新增會使用輸出繫結的程式碼

在定義繫結之後,您即可使用繫結的 name 來以函式簽章中屬性的形式存取它。 藉由使用輸出繫結,您無須使用 Azure 儲存體 SDK 程式碼來進行驗證、取得佇列參考或寫入資料。 Functions 執行階段和佇列輸出繫結會為您進行這些工作。

將現有的 HttpExample 類別取代為下列程式碼:

    [Function("HttpExample")]
    public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var logger = executionContext.GetLogger("HttpExample");
        logger.LogInformation("C# HTTP trigger function processed a request.");

        var message = "Welcome to Azure Functions!";

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
        response.WriteString(message);

        // Return a response to both HTTP trigger and storage output binding.
        return new MultiResponse()
        {
            // Write a single message.
            Messages = new string[] { message },
            HttpResponse = response
        };
    }
}

在本機執行函式

  1. 若要執行您的函數,請在 Visual Studio 中按 F5。 您可能需要啟用防火牆例外狀況,工具才能處理 HTTP 要求。 在本機執行函式時,系統不會強制執行授權層級。

  2. 從 Azure Functions 執行階段輸出複製函式的 URL。

    Azure 本機運行時間

  3. 將 HTTP 要求的 URL 貼到瀏覽器的網址列中,然後執行要求。 下圖顯示函式傳回瀏覽器中對本機 GET 要求的回應:

    在瀏覽器中函式localhost回應

  4. 若要停止偵錯,請在 Visual Studio 中按下 Shift+F5 可。

第一次使用輸出系結時,Functions 運行時間會在儲存體帳戶中建立名為 outqueue 的新佇列。 您將會使用儲存體總管來確認佇列已連同新訊息一起被建立。

將儲存體總管連線到您的帳戶

如果您已經安裝 Azure 儲存體總管並將它連線至您的 Azure 帳戶,請略過此節內容。

  1. 執行 Azure 儲存體總管 工具,選取左側的連線圖示,然後選取 [新增帳戶]

    如何將 Azure 帳戶新增至 Microsoft Azure 儲存體總管 的螢幕快照。

  2. 在 [連線] 對話方塊中,選擇 [新增 Azure 帳戶],選擇您的 [Azure 環境],然後選取 [登入]

    登入 Azure 帳戶視窗的螢幕快照。

在您成功登入帳戶之後,您會看見與您的帳戶相關聯的所有 Azure 訂用帳戶。 選擇您的訂用帳戶,然後選取 [開啟總管]

檢查輸出佇列

  1. 在 儲存體總管 中,展開 [佇列] 節點,然後選取名為 outqueue佇列。

    佇列包含訊息,該訊息將您執行 HTTP 觸發程序函式時建立的輸出繫結排入佇列。 如果您叫用具有預設 name 值為 Azure 的函式,佇列訊息是:Name passed to the function: Azure

    Azure 儲存體 Explorer 中顯示的佇列訊息螢幕快照。

  2. 再次執行函式並傳送另一個要求,即會在佇列中看到新的訊息。

現在,您可以將更新的函式應用程式重新發行至 Azure。

重新部署並驗證更新的應用程式

  1. 方案總管 中,以滑鼠右鍵按兩下專案,然後選取 [發佈],然後選擇 [發佈] 以將專案重新發佈至 Azure。

  2. 部署完成之後,您可以使用瀏覽器來測試重新部署的函式。 和之前一樣,將查詢字串 &name=<yourname> 附加至 URL。

  3. 再次 檢視記憶體佇列 中的訊息,以確認輸出系結再次在佇列中產生新訊息。

清除資源

此集合中的其他快速入門會以本快速入門為基礎。 如果您打算繼續進行後續的快速入門、教學課程或者您在本快速入門中建立的任何服務,請勿清除資源。

在 Azure 中「資源」是指函式應用程式、函式、儲存體帳戶等等。 其會分組為「資源群組」,您可以藉由刪除群組來刪除群組中的所有項目。

您已建立完成這些快速入門所需的資源。 您可能必須支付這些資源,取決於您的帳戶狀態服務定價。 如果您不再需要資源,刪除方式如下:

  1. 在 Azure 入口網站中,移至 [資源群組] 分頁。

    若要從函數應用程式頁面移至該頁面,選取 [概觀] 索引標籤,然後選取 [資源群組] 底下的連結。

    顯示從函式應用程式頁面選取要刪除之資源群組的螢幕快照。

    若要從儀表板移至該頁面,請選取 [資源群組],然後選取您用於本文的資源群組。

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

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

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

下一步

您已更新 HTTP 觸發的函式,以將資料寫入至儲存體佇列。 若要深入了解開發 Functions,請參閱 使用 Visual Studio 開發 Azure Functions。

接下來,您應為函式應用程式啟用 Application Insights 監視: