適用於 Azure Functions 的 Azure Blob 記憶體系結概觀

Azure Functions 會透過觸發程式和系結與 Azure 儲存體 整合。 與 Blob 記憶體整合可讓您建置函式,以回應 Blob 數據中的變更,以及讀取和寫入值。

動作 類型
以 Blob 記憶體資料變更身分執行函式 觸發程序
讀取函式中的 Blob 記憶體數據 輸入系結
允許函式寫入 Blob 記憶體數據 輸出系結

安裝擴充功能

您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:

函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。

擴充功能的功能會根據擴充功能版本而有所不同:

此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函式應用程式的教學課程,請參閱 使用身分識別型連線建立函式應用程式教學課程

此版本可讓您系結至 Azure.儲存體 的類型。Blob。 深入了解這些新類型WindowsAzure.Storage與 和 Microsoft.Azure.Storage 的不同,以及如何從 Azure.儲存體 移轉至它們。Blob 移轉指南

藉由安裝 Microsoft.Azure.Functions.Worker.Extensions.儲存體,將擴充功能新增至您的專案。Blob NuGet 套件 5.x 版或更新版本。

使用 .NET CLI:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs

注意

Azure Blob、Azure 佇列和 Azure 數據表現在會使用不同的擴充功能,並個別參考。 例如,若要針對 .NET 隔離進程應用程式中的所有三個服務使用觸發程式和系結,您應該將下列套件新增至專案:

先前,延伸模組隨附為 Microsoft.Azure.Functions.Worker.Extensions.儲存體 4.x 版。 這個相同的套件也有 5.x 版,僅參考 Blob 和佇列的分割套件。 從舊版升級套件參考時,您可能需要另外參考新的 Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet 套件。 此外,參考這些較新的分割套件時,請確定您並未參考舊版的合併儲存套件,因為這會導致相同系結的兩個定義發生衝突。

如果您要使用 F# 撰寫應用程式,您也必須將此延伸模組設定為應用程式的啟動設定一部分。 在 或的呼叫ConfigureFunctionsWorkerDefaults()ConfigureFunctionsWebApplication()中,新增接受 參數的IFunctionsWorkerApplication委派。 然後在該委派的主體內呼叫 ConfigureBlobStorageExtension() 物件:

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureBlobStorageExtension() |> ignore
) |> ignore

安裝套件組合

Blob 記憶體系結是延伸模組套件組合的一部分,其指定於 host.json 項目檔中。 您可能需要修改此套件組合來變更系結的版本,或尚未安裝套件組合。 若要深入瞭解,請參閱 延伸模組套件組合

此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函式應用程式的教學課程,請參閱 使用身分識別型連線建立函式應用程式教學課程

您可以從延伸模組套件組合 v3 新增此版本的延伸模組,方法是在檔案中 host.json 新增或取代下列程式代碼:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

若要深入瞭解,請參閱 更新延伸模組

系結類型

.NET 支援的系結類型取決於延伸模組版本和 C# 執行模式,這可以是下列其中一項:

已編譯 C# 函式的隔離背景工作進程類別庫會在與運行時間隔離的進程中執行。

選擇版本以查看模式和版本的系結類型詳細數據。

隔離的背景工作進程會根據下表支持參數類型。

Blob 觸發程式

Blob 觸發程式可以系結至下列類型:

類型 描述
string Blob 內容做為字串。 當 Blob 內容是簡單的文字時, 請使用 。
byte[] Blob 內容的位元組。
JSON 可串行化類型 當 Blob 包含 JSON 數據時,Functions 會嘗試將 JSON 數據還原串行化為一般舊的 CLR 物件 (POCO) 類型。
數據流1 Blob 內容的輸入數據流。
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
線上至 Blob 的用戶端。 此類型集提供處理 Blob 的最大控制,而且如果連線有足夠的許可權,則可用來回寫至 Blob。

1 若要使用這些類型,您必須參考 Microsoft.Azure.Functions.Worker.Extensions.儲存體。Blob 6.0.0 或更新版本,以及 SDK 類型系結的常見相依性。

Blob 輸入系結

當您想要讓函式處理單一 Blob 時,Blob 輸入系結可以繫結至下列類型:

類型 描述
string Blob 內容做為字串。 當 Blob 內容是簡單的文字時, 請使用 。
byte[] Blob 內容的位元組。
JSON 可串行化類型 當 Blob 包含 JSON 數據時,Functions 會嘗試將 JSON 數據還原串行化為一般舊的 CLR 物件 (POCO) 類型。
數據流1 Blob 內容的輸入數據流。
BlobClient1
BlockBlobClient1
PageBlobClient1
AppendBlobClient1
BlobBaseClient1
線上至 Blob 的用戶端。 此類型集提供處理 Blob 的最大控件,而且如果連線有足夠的許可權,則可以用來回寫它。

當您想要函式從容器處理多個 Blob 時,Blob 輸入系結可以繫結至下列類型:

類型 描述
T[]List<T> 其中 T 是其中一個單一 Blob 輸入系結類型 多個 Blob 的陣列或清單。 每個專案都代表容器中的一個 Blob。 您也可以繫結至這些類型所實作的任何介面,例如 IEnumerable<T>
BlobContainerClient1 線上至容器的用戶端。 此類型提供處理容器的最充分控制權,而且如果連接有足夠的許可權,則可以用來寫入容器。

1 若要使用這些類型,您必須參考 Microsoft.Azure.Functions.Worker.Extensions.儲存體。Blob 6.0.0 或更新版本,以及 SDK 類型系結的常見相依性。

Blob 輸出系結

當您想要讓函式寫入單一 Blob 時,Blob 輸出系結可以繫結至下列類型:

類型 描述
string Blob 內容做為字串。 當 Blob 內容是簡單的文字時, 請使用 。
byte[] Blob 內容的位元組。
JSON 可串行化類型 物件,表示 JSON Blob 的內容。 函式會嘗試將一般舊的CLR物件 (POCO) 類型串行化為 JSON 數據。

當您想要讓函式寫入多個 Blob 時,Blob 輸出系結可以繫結至下列類型:

類型 描述
T[] 其中 T 是其中一個 Blob 輸出系結類型 數位,包含多個 Blob 的內容。 每個專案都代表一個 Blob 的內容。

針對其他輸出案例,請從 Azure.儲存體建立和使用類型。Blob 直接。

host.json 設定

本節說明適用于使用此系結之函式的函式應用程式組態設定。 這些設定僅適用于使用擴充功能 5.0.0 版和更新版本時。 下列範例 host.json 檔案僅包含此系結的 2.x+ 版設定。 如需 2.x 版和更新版本中函式應用程式組態設定的詳細資訊,請參閱 Azure Functions 的 host.json 參考。

注意

本節不適用於 5.0.0 之前的擴充功能版本。 針對這些舊版,Blob 沒有任何函式應用程式範圍的組態設定。

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
屬性 預設 描述
maxDegreeOfParallelism 8 * (可用核心數目) 指定函式應用程式中所有 Blob 觸發函式允許的並行調用數目。 允許的最小值為 1。
poisonBlobThreshold 5 將訊息移至有害佇列之前,嘗試處理訊息的整數次數。 允許的最小值為 1。

下一步