探索輸入和輸出繫結類型

已完成

存取和處理資料是許多軟體解決方案中的重要工作。 請考慮以下這些案例:

  • 您被要求進行實作,以將傳入資料從 Azure Blob 儲存體移到 Azure Cosmos DB。
  • 您想要將內送郵件張貼至佇列,以讓企業中的其他元件進行處理。
  • 您的服務需要從佇列中擷取玩家的分數,然後更新線上計分板。

這些範例都與移動資料有關。 不同案例之間的資料來源和目的地都不同,但是模式類似。 您連線至資料來源,並讀取和寫入資料。 Azure Functions 可協助您使用繫結來整合資料與服務。

什麼是繫結?

在 Azure Functions 中,繫結可提供從您的程式碼內連線至資料的宣告式方法。 它們會使得持續與函式中的資料流整合更加容易。 您可以有多個繫結,提供對不同資料元素的存取。 此整合功能很強大,因為您可以直接連線至資料來源,而不需要編碼特定的連線邏輯 (如資料庫連線或 Web API 介面)。

繫結的類型

可用於函式的繫結有兩種:

  • 輸入繫結 - 連線至資料來源。 我們的函式可以從這些輸入來源讀取資料。

  • 輸出繫結 - 連線至資料目的地。 我們的函式可將資料寫入這些輸出目的地。

另外還有觸發程序,這是會導致函數執行的特殊輸入繫結類型。 例如,Azure 事件方格通知即可設定為觸發程序。 當事件發生時,函式即會執行。

支援繫結的類型

繫結的 類型 會定義我們讀取或傳送資料的位置。 有一個繫結可以回應 Web 要求,並且有大量選取的繫結可以直接與多種不同的 Azure 服務和第三方服務互動。

繫結類型可當作輸入和 (或) 輸出使用。 例如,函式可以寫入 Blob 儲存體輸出繫結,但 Blob 儲存體更新可能會觸發另一個函式。

以下是一些常見的繫結類型:

  • Blob 儲存體
  • Azure 服務匯流排佇列
  • Azure Cosmos DB
  • Azure 事件中樞
  • 外部檔案
  • 外部資料表
  • HTTP 端點

這些類型只是部分範例。 還有一些並未列出,且函式具有擴充性模型,可新增更多繫結。

繫結屬性

所有繫結中都需要三個屬性,不過您可能必須根據所使用的系結類型和儲存體類型提供更多屬性。

  • 名稱:定義您用來存取資料的函式參數。 例如,在佇列輸入繫結中,這屬性是會接收佇列訊息內容之函式參數的名稱。

  • 類型 - 識別繫結的類型。 例如,您想要與其互動的資料或服務類型。

  • 方向 - 指出資料流程的方向。 例如,它是輸入或輸出繫結嗎?

此外,大部分的繫結類型也需要第四個屬性:

  • 連線:提供包含連接字串的應用程式設定金鑰名稱。 繫結會使用儲存在應用程式設定中的連接字串,將祕密排除在函式程式碼以外。 連線字串可讓您的程式碼更容易設定且更安全。

建立繫結

繫結是以 JSON 格式定義。 繫結會在您的函式組態檔中設定,該檔案名為 function.json,並且與您的函式程式碼存放於相同的資料夾中。

我們將檢查範例輸入繫結

    ...
    {
      "name": "headshotBlob",
      "type": "blob",
      "path": "thumbnail-images/{filename}",
      "connection": "HeadshotStorageConnection",
      "direction": "in"
    },
    ...

為了建立此繫結,我們將:

  1. function.json 檔案中建立繫結。

  2. 提供 name 變數的值。 在此範例中,變數會保存 Blob 資料。

  3. 提供儲存體 type。 在上述範例中,我們使用 Blob 儲存體。

  4. 提供 path,它會指定容器和其中將包含的項目名稱。 使用 Blob 觸發程式時需要 path 屬性,而且應該以此處顯示的樣式提供,在路徑的檔案名稱部分前後有大括號。 此語法會建立 繫結運算式,讓您在其他繫結和函式的程式碼中參考 Blob 的名稱。 在此範例中,函式上名為 filename 的參數會填入觸發函式之 Blob 的檔案名稱。

  5. 提供在應用程式設定檔中定義的 connection 字串設定名稱。 此名稱可當作金鑰使用,以尋找連線至儲存體帳戶的連接字串。

  6. direction 定義為 in。 它會從 Blob 讀取資料。

繫結可用來連線至您函式中的資料。 在此範例中,我們使用輸入繫結來連線使用者影像,這些影像會由我們的函式處理為縮圖。