適用於 Azure Functions 的 Azure Blob 記憶體系結概觀
Azure Functions 會透過觸發程式和系結與 Azure 儲存體 整合。 與 Blob 記憶體整合可讓您建置函式,以回應 Blob 數據中的變更,以及讀取和寫入值。
動作 | 類型 |
---|---|
以 Blob 記憶體資料變更身分執行函式 | 觸發程序 |
讀取函式中的 Blob 記憶體數據 | 輸入繫結 |
允許函式寫入 Blob 記憶體數據 | 輸出繫結 |
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
擴充功能的功能會根據擴充功能版本而有所不同:
此版本引進了使用身分識別而非秘密進行連線的能力。 如需使用受控識別設定函數應用程式的教學課程,請參閱使用身分識別型連線建立函數應用程式的教學課程。
此版本可讓您系結至 Azure.Storage.Blobs 中的類型。 深入了解這些新類型WindowsAzure.Storage
Microsoft.Azure.Storage
與 和的不同,以及如何從 Azure.Storage.Blobs 移轉指南移轉至它們。
藉由安裝 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.Blobs
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
- Microsoft.Azure.Functions.Worker.Extensions.Tables
先前,延伸模組隨附於 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 建立和使用類型。
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。 |