共用方式為


適用於 Azure Functions 的 Azure Blob 儲存體繫結概觀

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

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

安裝擴充功能

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

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

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

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

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

此版本支援透過 .NET Aspire 整合來設定觸發程式和系結。

藉由安裝 Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 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.Storage 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.Storage.Blobs 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.Storage.Blobs 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.Storage.Blobs 建立和使用 BlobClientBlobContainerClient 與其他類型 如需使用相依性插入從 Azure SDK 建立用戶端類型的範例,請參閱 註冊 Azure 用戶端

SDK 系結類型

Azure 記憶體 Blob 的 SDK 類型已正式推出! 遵循 適用於 Blob 的 Python SDK 系結範例 ,以開始使用 Python 中的適用於 Blob 的 SDK 類型。

重要

使用 SDK 類型系結需要 Python v2 程式設計模型


繫結 參數型別 範例
Blob 觸發程序 BlobClient
ContainerClient
StorageStreamDownloader
BlobClient,
ContainerClient,
StorageStreamDownloader
Blob 輸入 BlobClient
ContainerClient
StorageStreamDownloader
BlobClient,
ContainerClient,
StorageStreamDownloader

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。

下一步