Übersicht zu Azure Blob Storage-Bindungen für Azure Functions
Azure Functions integriert sich in Azure Storage mittels Triggern und Bindungen. Durch die Integration in Blob Storage können Sie Funktionen erstellen, die auf Änderungen in Blobdaten sowie auf Lese- und Schreib-Werte reagieren.
Aktion | type |
---|---|
Ausführen einer Funktion, wenn sich Blob Storage-Daten ändern | Trigger |
Lesen von Blob Storage-Daten in eine Funktion | Eingabebindung |
Einer Funktion das Schreiben von Blob Storage-Daten gestatten | Ausgabebindung |
Installieren der Erweiterung
Das NuGet-Erweiterungspaket, das Sie installieren, hängt vom C#-Modus ab, den Sie in Ihrer Funktions-App verwenden:
Funktionen werden in einem isolierten C#-Workerprozess ausgeführt. Weitere Informationen finden Sie im Leitfaden zum Ausführen von Azure Functions (C#) in einem isolierten Workerprozess.
Die Funktionalität der Erweiterung ist abhängig von der Erweiterungsversion unterschiedlich:
Diese Version bietet die Möglichkeit, eine Verbindung mithilfe einer Identität anstelle eines Geheimnisses herzustellen. Ein Tutorial zum Konfigurieren Ihrer Funktions-Apps mit verwalteten Identitäten finden Sie im Tutorial zum Erstellen einer Funktions-App mit identitätsbasierten Verbindungen.
Mit dieser Version können Sie Bindungen an Typen aus Azure.Storage.Blobs erstellen. Lesen Sie den Azure.Storage.Blobs-Migrationsleitfaden, um zu erfahren, inwiefern sich diese neuen Typen von WindowsAzure.Storage
und Microsoft.Azure.Storage
unterscheiden und wie Sie zu ihnen migrieren.
Fügen Sie die Erweiterung zu Ihrem Projekt hinzu, indem Sie das NuGet-Paket „Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs“ Version 5.x oder höher installieren.
Verwenden der .NET-CLI:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
Hinweis
Azure Blobs, Azure Queues und Azure Tables verwenden jetzt separate Erweiterungen und werden einzeln referenziert. Wenn Sie beispielsweise die Trigger und Bindungen für alle drei Dienste in Ihrer .NET-App im isolierten Prozess verwenden möchten, sollten Sie Ihrem Projekt die folgenden Pakete hinzufügen:
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
- Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
- Microsoft.Azure.Functions.Worker.Extensions.Tables
Zuvor wurden die Erweiterungen zusammen als Microsoft.Azure.Functions.Worker.Extensions.Storage Version 4.x ausgeliefert. Dieses Paket verfügt auch über eine 5.x-Version, die nur auf die geteilten Pakete für Blobs und Warteschlangen verweist. Wenn Sie Ihre Paketverweise älterer Versionen aktualisieren, müssen Sie möglicherweise zusätzlich auf das neue NuGet-Paket Microsoft.Azure.Functions.Worker.Extensions.Tables verweisen. Stellen Sie beim Verweisen auf diese neueren geteilten Pakete außerdem sicher, dass Sie nicht auf eine ältere Version des kombinierten Speicherpakets verweisen, da dies zu Konflikten durch jeweils zwei Definitionen derselben Bindungen führt.
Wenn Sie Ihre Anwendung mit F# schreiben, müssen Sie diese Erweiterung auch als Teil der Startkonfiguration der App konfigurieren. Fügen Sie im Aufruf von ConfigureFunctionsWorkerDefaults()
oder ConfigureFunctionsWebApplication()
einen Delegate hinzu, der einen IFunctionsWorkerApplication
-Parameter akzeptiert. Rufen Sie dann im Textkörper dieses Delegate ConfigureBlobStorageExtension()
für das Objekt auf:
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureBlobStorageExtension() |> ignore
) |> ignore
Installieren des Pakets
Die Blob-Speicherbindung ist Teil eines Erweiterungspakets, das in Ihrer Projektdatei „host.json“ angegeben wird. Möglicherweise müssen Sie dieses Paket ändern, um die Version der Bindung zu ändern, oder wenn Pakete noch nicht installiert sind. Weitere Informationen finden Sie unter Erweiterungspakete.
Diese Version bietet die Möglichkeit, eine Verbindung mithilfe einer Identität anstelle eines Geheimnisses herzustellen. Ein Tutorial zum Konfigurieren Ihrer Funktions-Apps mit verwalteten Identitäten finden Sie im Tutorial zum Erstellen einer Funktions-App mit identitätsbasierten Verbindungen.
Sie können diese Version der Erweiterung aus dem Erweiterungspaket v3 hinzufügen, indem Sie den folgenden Code in Ihrer Datei host.json
hinzufügen oder ersetzen:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
Weitere Informationen finden Sie unter Aktualisierung Ihrer Erweiterungen.
Bindungstypen
Die für .NET unterstützten Bindungstypen hängen sowohl von der Erweiterungsversion als auch von dem C#-Ausführungsmodus ab, der einer der folgenden sein kann:
Eine Klassenbibliothek in einem isolierten Workerprozess ist eine kompilierte C#-Funktion, die in einem von der Runtime isolierten Prozess ausgeführt wird.
Wählen Sie eine Version aus, um für den Modus und die Version Details zum Bindungstyp anzuzeigen.
Der isolierte Workerprozess unterstützt Parametertypen gemäß den folgenden Tabellen.
Blobtrigger
Der Blobtrigger kann an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
string |
Den Blobinhalt als Zeichenfolge. Verwenden Sie diese Option, wenn der Inhalt des Blobs einfacher Text ist. |
byte[] |
Die Bytes des Blobinhalts. |
Serialisierbare JSON-Typen | Wenn ein Blob JSON-Daten enthält, versucht Functions, die JSON-Daten in einen POCO-Objekttyp (Plain-Old CLR Object) zu deserialisieren. |
Stream1 | Ein Eingabestream des Blobinhalts. |
BlobClient1, BlockBlobClient1, PageBlobClient1, AppendBlobClient1, BlobBaseClient1 |
Ein Client, der mit dem Blob verbunden ist. Diese Typen bieten die größte Kontrolle für die Verarbeitung des Blobs und können zum Zurückschreiben in das Blob verwendet werden, wenn die Verbindung über ausreichende Berechtigungen verfügt. |
1 Um diese Typen zu verwenden, müssen Sie auf Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 oder höher und die gemeinsamen Abhängigkeiten für SDK-Typbindungen verweisen.
Blobeingabebindung
Wenn die Funktion ein einzelnes Blob verarbeiten soll, kann die Blobeingabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
string |
Den Blobinhalt als Zeichenfolge. Verwenden Sie diese Option, wenn der Inhalt des Blobs einfacher Text ist. |
byte[] |
Die Bytes des Blobinhalts. |
Serialisierbare JSON-Typen | Wenn ein Blob JSON-Daten enthält, versucht Functions, die JSON-Daten in einen POCO-Objekttyp (Plain-Old CLR Object) zu deserialisieren. |
Stream1 | Ein Eingabestream des Blobinhalts. |
BlobClient1, BlockBlobClient1, PageBlobClient1, AppendBlobClient1, BlobBaseClient1 |
Ein Client, der mit dem Blob verbunden ist. Diese Typen bieten die größte Kontrolle für die Verarbeitung des Blobs und können zum Zurückschreiben in das Blob verwendet werden, wenn die Verbindung über ausreichende Berechtigungen verfügt. |
Wenn die Funktion mehrere Blobs aus einem Container verarbeiten soll, kann die Blobeingabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
T[] oder List<T> , wobei T einer der einzelnen Blob-Eingabebindungstypen ist. |
Ein Array oder eine Liste mit mehreren Blobs. Jeder Eintrag stellt ein Blob aus dem Container dar. Sie können auch an beliebige Schnittstellen binden, die von diesen Typen implementiert werden, z. B. IEnumerable<T> . |
BlobContainerClient1 | Ein Client, der mit dem Container verbunden ist. Dieser Typ bietet die größte Kontrolle für die Verarbeitung des Containers und kann zum Schreiben in den Container verwendet werden, wenn die Verbindung über ausreichende Berechtigungen verfügt. |
1 Um diese Typen zu verwenden, müssen Sie auf Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 oder höher und die gemeinsamen Abhängigkeiten für SDK-Typbindungen verweisen.
Blobausgabebindung
Wenn die Funktion in ein einzelnes Blob schreiben soll, kann die Blobausgabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
string |
Den Blobinhalt als Zeichenfolge. Verwenden Sie diese Option, wenn der Inhalt des Blobs einfacher Text ist. |
byte[] |
Die Bytes des Blobinhalts. |
Serialisierbare JSON-Typen | Ein Objekt, das den Inhalt eines JSON-Blobs darstellt. Functions versucht, einen POCO-Typ (Plain-Old CLR Object) in JSON-Daten zu serialisieren. |
Wenn die Funktion in mehrere Nachrichten schreiben soll, kann die Blobausgabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
T[] , wobei T einer der einzelnen Blob-Ausgabebindungstypen ist. |
Ein Array, das Inhalt für mehrere Blobs enthält. Jeder Eintrag stellt den Inhalt eines Blobs dar. |
Erstellen und verwenden Sie für andere Ausgabeszenarien einen BlobClient oder BlobContainerClient mit anderen Typen von Azure.Storage.Blobs direkt. Ein Beispiel für die Verwendung der Abhängigkeitsinjektion zum Erstellen eines Clienttyps aus dem Azure SDK finden Sie unter Registrieren von Azure-Clients .
Einstellungen für „host.json“
In diesem Abschnitt werden die Konfigurationseinstellungen der Funktions-App für Funktionen beschrieben, die diese Bindung verwenden. Diese Einstellungen gelten nur bei Verwendung der Erweiterungsversion 5.0.0 und höher. Die nachfolgende Beispieldatei „host.json“ enthält nur die Einstellungen für Version 2.x und höhere Versionen für diese Bindung. Weitere Informationen zu den Konfigurationseinstellungen für Funktions-Apps in Version 2.x und höher finden Sie unter host.json-Referenz für Azure Functions.
Hinweis
Dieser Abschnitt gilt nicht für Erweiterungsversionen vor 5.0.0. Für diese früheren Versionen gibt es keine Funktions-App-weiten Konfigurationseinstellungen für Blobs.
{
"version": "2.0",
"extensions": {
"blobs": {
"maxDegreeOfParallelism": 4,
"poisonBlobThreshold": 1
}
}
}
Eigenschaft | Standard | BESCHREIBUNG |
---|---|---|
maxDegreeOfParallelism | 8 * (Anzahl verfügbarer Kerne) | Die ganzzahlige Anzahl gleichzeitiger Aufrufe, die für alle von Blobs ausgelösten Funktionen in einer bestimmten Funktions-App zulässig sind. Der minimal zulässige Wert ist 1. |
poisonBlobThreshold | 5 | Die ganze Zahl der Versuche zum Verarbeiten einer Nachricht, bevor diese in die Warteschlange für nicht verarbeitete Nachrichten verschoben wird. Der minimal zulässige Wert ist 1. |