Översikt över Azure Blob Storage-bindningar för Azure Functions

Azure Functions integreras med Azure Storage via utlösare och bindningar. Genom att integrera med Blob Storage kan du skapa funktioner som reagerar på ändringar i blobdata samt läs- och skrivvärden.

Åtgärd Typ
Kör en funktion när bloblagringsdata ändras Utlösare
Läsa bloblagringsdata i en funktion Indatabindning
Tillåt att en funktion skriver bloblagringsdata Utdatabindning

Installera tillägget

Vilket NuGet-tilläggspaket du installerar beror på vilket C#-läge du använder i funktionsappen:

Funktioner körs i en isolerad C#-arbetsprocess. Mer information finns i Guide för att köra C# Azure Functions i en isolerad arbetsprocess.

Funktionerna i tillägget varierar beroende på tilläggsversionen:

Den här versionen introducerar möjligheten att ansluta med hjälp av en identitet i stället för en hemlighet. En självstudiekurs om hur du konfigurerar dina funktionsappar med hanterade identiteter finns i självstudien skapa en funktionsapp med identitetsbaserade anslutningar.

Med den här versionen kan du binda till typer från Azure.Storage.Blobs. Läs mer om hur dessa nya typer skiljer sig från WindowsAzure.Storage och Microsoft.Azure.Storage hur du migrerar till dem från migreringsguiden för Azure.Storage.Blobs.

Lägg till tillägget i projektet genom att installera NuGet-paketet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, version 5.x eller senare.

Använda .NET CLI:

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

Kommentar

Azure Blobs, Azure Queues och Azure Tables använder nu separata tillägg och refereras individuellt. Om du till exempel vill använda utlösare och bindningar för alla tre tjänsterna i din isolerade .NET-processapp bör du lägga till följande paket i projektet:

Tidigare levererades tilläggen tillsammans som Microsoft.Azure.Functions.Worker.Extensions.Storage, version 4.x. Samma paket har också en version på 5.x som endast refererar till delade paket för blobar och köer. När du uppgraderar paketreferenserna från äldre versioner kan du därför behöva referera till det nya NuGet-paketet Microsoft.Azure.Functions.Worker.Extensions.Tables . När du refererar till dessa nyare delade paket kontrollerar du också att du inte refererar till en äldre version av det kombinerade lagringspaketet, eftersom detta resulterar i konflikter från två definitioner av samma bindningar.

Om du skriver ditt program med hjälp av F# måste du också konfigurera det här tillägget som en del av appens startkonfiguration. I anropet till eller ConfigureFunctionsWebApplication()lägger du till ConfigureFunctionsWorkerDefaults() ett ombud som tar en IFunctionsWorkerApplication parameter. Anropa sedan objektet i brödtexten för ombudet ConfigureBlobStorageExtension() :

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

Installera paket

Blob Storage-bindningen är en del av ett tilläggspaket som anges i din host.json projektfil. Du kan behöva ändra det här paketet för att ändra versionen av bindningen, eller om paket inte redan är installerade. Mer information finns i tilläggspaketet.

Den här versionen introducerar möjligheten att ansluta med hjälp av en identitet i stället för en hemlighet. En självstudiekurs om hur du konfigurerar dina funktionsappar med hanterade identiteter finns i självstudien skapa en funktionsapp med identitetsbaserade anslutningar.

Du kan lägga till den här versionen av tillägget från tilläggspaketet v3 genom att lägga till eller ersätta följande kod i host.json filen:

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

Mer information finns i Uppdatera dina tillägg.

Bindningstyper

Vilka bindningstyper som stöds för .NET beror på både tilläggsversionen och C#-körningsläget, vilket kan vara något av följande:

Ett isolerat arbetsprocessklassbibliotek kompilerade C#-funktioner körs i en process som är isolerad från körningen.

Välj en version för att se information om bindningstyp för läget och versionen.

Den isolerade arbetsprocessen stöder parametertyper enligt tabellerna nedan.

Blobutlösare

Blobutlösaren kan binda till följande typer:

Typ Beskrivning
string Blobinnehållet som en sträng. Använd när blobinnehållet är enkel text.
byte[] Byte för blobinnehållet.
JSON-serialiserbara typer När en blob innehåller JSON-data försöker Functions deserialisera JSON-data till en vanlig CLR-objekttyp (POCO).
Stream1 En indataström av blobinnehållet.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
En klient som är ansluten till bloben. Den här uppsättningen typer ger mest kontroll för bearbetning av bloben och kan användas för att skriva tillbaka till bloben om anslutningen har tillräcklig behörighet.

1 Om du vill använda dessa typer måste du referera till Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 eller senare och de vanliga beroendena för SDK-typbindningar.

Blobindatabindning

När du vill att funktionen ska bearbeta en enskild blob kan blobindatabindningen binda till följande typer:

Typ Beskrivning
string Blobinnehållet som en sträng. Använd när blobinnehållet är enkel text.
byte[] Byte för blobinnehållet.
JSON-serialiserbara typer När en blob innehåller JSON-data försöker Functions deserialisera JSON-data till en vanlig CLR-objekttyp (POCO).
Stream1 En indataström av blobinnehållet.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
En klient som är ansluten till bloben. Den här uppsättningen typer ger mest kontroll för bearbetning av bloben och kan användas för att skriva tillbaka till den om anslutningen har tillräcklig behörighet.

När du vill att funktionen ska bearbeta flera blobar från en container kan blobindatabindningen binda till följande typer:

Typ Beskrivning
T[] eller List<T> var T är en av bindningstyperna för enskilda blobindata En matris eller lista över flera blobar. Varje post representerar en blob från containern. Du kan också binda till alla gränssnitt som implementeras av dessa typer, till exempel IEnumerable<T>.
BlobContainerClient1 En klient som är ansluten till containern. Den här typen ger mest kontroll för bearbetning av containern och kan användas för att skriva till den om anslutningen har tillräcklig behörighet.

1 Om du vill använda dessa typer måste du referera till Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 eller senare och de vanliga beroendena för SDK-typbindningar.

Blobutdatabindning

När du vill att funktionen ska skriva till en enda blob kan blobutdatabindningen binda till följande typer:

Typ Beskrivning
string Blobinnehållet som en sträng. Använd när blobinnehållet är enkel text.
byte[] Byte för blobinnehållet.
JSON-serialiserbara typer Ett objekt som representerar innehållet i en JSON-blob. Functions försöker serialisera en vanlig CLR-objekttyp (POCO) till JSON-data.

När du vill att funktionen ska skriva till flera blobar kan blobutdatabindningen binda till följande typer:

Typ Beskrivning
T[] där T är en av bindningstyperna för enskilda blobutdata En matris som innehåller innehåll för flera blobar. Varje post representerar innehållet i en blob.

För andra utdatascenarier skapar och använder du typer från Azure.Storage.Blobs direkt.

host.json inställningar

I det här avsnittet beskrivs konfigurationsinställningarna för funktionsappen som är tillgängliga för funktioner som använder den här bindningen. De här inställningarna gäller endast när du använder tilläggsversion 5.0.0 och senare. Exemplet host.json filen nedan innehåller endast version 2.x+-inställningarna för den här bindningen. Mer information om konfigurationsinställningar för funktionsappar i version 2.x och senare versioner finns i host.json referens för Azure Functions.

Kommentar

Det här avsnittet gäller inte för tilläggsversioner före 5.0.0. För de tidigare versionerna finns det inga funktionsinställningar för appomfattande konfiguration för blobar.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Property Standardvärde beskrivning
maxDegreeOfParallelism 8 * (antalet tillgängliga kärnor) Heltalsantalet samtidiga anrop som tillåts för alla blobutlösta funktioner i en viss funktionsapp. Det minsta tillåtna värdet är 1.
poisonBlobThreshold 5 Heltalsantalet gånger för att försöka bearbeta ett meddelande innan du flyttar det till giftkön. Det minsta tillåtna värdet är 1.

Nästa steg