Overzicht van Azure Blob Storage-bindingen voor Azure Functions

Azure Functions kan worden geïntegreerd met Azure Storage via triggers en bindingen. Door te integreren met Blob Storage kunt u functies bouwen die reageren op wijzigingen in blobgegevens en lees- en schrijfwaarden.

Actie Type
Een functie uitvoeren als wijzigingen in blob-opslaggegevens Trigger
Blob Storage-gegevens lezen in een functie Invoerbinding
Toestaan dat een functie blobopslaggegevens schrijft Uitvoerbinding

De extensie installeren

Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:

Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.

De functionaliteit van de extensie varieert afhankelijk van de extensieversie:

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

Met deze versie kunt u verbinding maken met typen van Azure.Storage.Blobs. Meer informatie over hoe deze nieuwe typen verschillen van WindowsAzure.Storage en Microsoft.Azure.Storage hoe u ernaar migreert vanuit de migratiehandleiding voor Azure.Storage.Blobs.

Voeg de extensie toe aan uw project door het NuGet-pakket Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, versie 5.x of hoger, te installeren.

De .NET CLI gebruiken:

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

Notitie

Azure Blobs, Azure Queues en Azure Tables maken nu gebruik van afzonderlijke extensies en worden afzonderlijk verwezen. Als u bijvoorbeeld de triggers en bindingen voor alle drie de services in uw .NET-proces-app wilt gebruiken, moet u de volgende pakketten toevoegen aan uw project:

Voorheen werden de extensies samen geleverd als Microsoft.Azure.Functions.Worker.Extensions.Storage, versie 4.x. Hetzelfde pakket heeft ook een 5.x-versie, die alleen verwijst naar de gesplitste pakketten voor blobs en wachtrijen. Wanneer u uw pakketverwijzingen van oudere versies bijwerkt, moet u mogelijk ook verwijzen naar het nieuwe Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet-pakket. Wanneer u naar deze nieuwere gesplitste pakketten verwijst, moet u er ook voor zorgen dat u niet verwijst naar een oudere versie van het gecombineerde opslagpakket, omdat dit conflicten oplevert van twee definities van dezelfde bindingen.

Als u uw toepassing schrijft met F#, moet u deze extensie ook configureren als onderdeel van de opstartconfiguratie van de app. Voeg in de aanroep naar ConfigureFunctionsWorkerDefaults() of ConfigureFunctionsWebApplication()een gemachtigde toe die een IFunctionsWorkerApplication parameter gebruikt. Roep vervolgens binnen de hoofdtekst van die gemachtigde ConfigureBlobStorageExtension() het object aan:

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

Bundel installeren

De Blob Storage-binding maakt deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Mogelijk moet u deze bundel wijzigen om de versie van de binding te wijzigen of als bundels nog niet zijn geïnstalleerd. Zie uitbreidingsbundel voor meer informatie.

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

U kunt deze versie van de extensie toevoegen vanuit de extensiebundel v3 door de volgende code toe te voegen of te vervangen in uw host.json bestand:

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

Zie Uw extensies bijwerken voor meer informatie.

Bindingstypen

De bindingstypen die worden ondersteund voor .NET zijn afhankelijk van zowel de extensieversie als de C#-uitvoeringsmodus. Dit kan een van de volgende zijn:

Een geïsoleerde werkprocesklassebibliotheek gecompileerde C#-functie wordt uitgevoerd in een proces dat is geïsoleerd van de runtime.

Kies een versie om de details van het bindingstype voor de modus en versie weer te geven.

Het geïsoleerde werkproces ondersteunt parametertypen volgens de onderstaande tabellen.

Blobtrigger

De blobtrigger kan worden gebonden aan de volgende typen:

Type Description
string De blob-inhoud als een tekenreeks. Gebruik deze functie wanneer de blob-inhoud eenvoudige tekst is.
byte[] De bytes van de blob-inhoud.
JSON serialiseerbare typen Wanneer een blob JSON-gegevens bevat, probeert Functions deSerialiseren van de JSON-gegevens in een niet-oud POCO-type (CLR-object).
Stream1 Een invoerstroom van de blob-inhoud.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Een client die is verbonden met de blob. Deze set typen biedt het meeste beheer voor het verwerken van de blob en kan worden gebruikt om terug te schrijven naar de blob als de verbinding voldoende machtigingen heeft.

1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.

Blob-invoerbinding

Wanneer u wilt dat de functie één blob verwerkt, kan de blob-invoerbinding worden gekoppeld aan de volgende typen:

Type Description
string De blob-inhoud als een tekenreeks. Gebruik deze functie wanneer de blob-inhoud eenvoudige tekst is.
byte[] De bytes van de blob-inhoud.
JSON serialiseerbare typen Wanneer een blob JSON-gegevens bevat, probeert Functions deSerialiseren van de JSON-gegevens in een niet-oud POCO-type (CLR-object).
Stream1 Een invoerstroom van de blob-inhoud.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Een client die is verbonden met de blob. Deze set typen biedt de meeste controle voor het verwerken van de blob en kan worden gebruikt om terug te schrijven naar de blob als de verbinding voldoende machtigingen heeft.

Wanneer u wilt dat de functie meerdere blobs uit een container verwerkt, kan de blob-invoerbinding worden gekoppeld aan de volgende typen:

Type Description
T[] of List<T> waar T een van de bindingstypen voor één blob-invoer is Een matrix of lijst met meerdere blobs. Elke vermelding vertegenwoordigt één blob uit de container. U kunt ook verbinding maken met alle interfaces die door deze typen zijn geïmplementeerd, zoals IEnumerable<T>.
BlobContainerClient1 Een client die is verbonden met de container. Dit type biedt het meeste beheer voor het verwerken van de container en kan worden gebruikt om ernaar te schrijven als de verbinding voldoende machtigingen heeft.

1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.

Blob-uitvoerbinding

Wanneer u wilt dat de functie naar één blob schrijft, kan de blob-uitvoerbinding worden gekoppeld aan de volgende typen:

Type Description
string De blob-inhoud als een tekenreeks. Gebruik deze functie wanneer de blob-inhoud eenvoudige tekst is.
byte[] De bytes van de blob-inhoud.
JSON serialiseerbare typen Een object dat de inhoud van een JSON-blob vertegenwoordigt. Functions probeert een normaal oud CLR-objecttype (POCO) te serialiseren in JSON-gegevens.

Wanneer u wilt dat de functie naar meerdere blobs schrijft, kan de blob-uitvoerbinding worden gekoppeld aan de volgende typen:

Type Description
T[] waarbij T een van de bindingstypen voor één blob-uitvoer is Een matrix met inhoud voor meerdere blobs. Elke vermelding vertegenwoordigt de inhoud van één blob.

Voor andere uitvoerscenario's maakt en gebruikt u rechtstreeks typen van Azure.Storage.Blobs .

host.json-instellingen

In deze sectie worden de configuratie-instellingen van de functie-app beschreven die beschikbaar zijn voor functies die gebruikmaken van deze binding. Deze instellingen zijn alleen van toepassing wanneer u extensieversie 5.0.0 en hoger gebruikt. Het onderstaande voorbeeld host.json bestand bevat alleen de instellingen voor versie 2.x+ voor deze binding. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps in versies 2.x en latere versies.

Notitie

Deze sectie is niet van toepassing op extensieversies vóór 5.0.0. Voor deze eerdere versies zijn er geen configuratie-instellingen voor de hele functie-app voor blobs.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Eigenschappen Standaard Beschrijving
maxDegreeOfParallelism 8 * (het aantal beschikbare kernen) Het gehele aantal gelijktijdige aanroepen dat is toegestaan voor alle door blob geactiveerde functies in een bepaalde functie-app. De minimaal toegestane waarde is 1.
poisonBlobThreshold 5 Het gehele aantal keren dat u een bericht wilt verwerken voordat u het naar de gifwachtrij verplaatst. De minimaal toegestane waarde is 1.

Volgende stappen