Azure Tables-Bindungen für Azure Functions
Azure Functions ist in Azure Tables über Trigger und Bindungen integriert. Durch die Integration in Azure Tables können Sie Funktionen erstellen, die Daten mithilfe von Azure Cosmos DB for Table und Azure Table Storage lesen und schreiben.
Aktion | type |
---|---|
Liest Tabellendaten in einer Funktion | Eingabebindung |
Gestattet einer Funktion das Schreiben von Tabellendaten | 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.
Der Prozess zum Installieren 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.Data.Tables
erstellen. Außerdem wird die Möglichkeit eingeführt, Azure Cosmos DB for Table zu verwenden.
Diese Erweiterung ist verfügbar, indem Sie das NuGet-Paket Microsoft.Azure.Functions.Worker.Extensions.Tables mit Version 5.x oder höher der Erweiterungen für Blobs und Warteschlangen in einem Projekt installieren.
Verwenden der .NET-CLI:
# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0
# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0
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 ConfigureTablesExtension()
für das Objekt auf:
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore
Installieren des Pakets
Die Azure Tables-Bindungen sind Teil eines Erweiterungspakets, das in Ihrer Projektdatei „host.json“ angegeben wird. Möglicherweise müssen Sie dieses Paket ändern, um die Version der Bindungen 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)"
}
}
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. Die Unterstützung für die Bindung an Typen aus Azure.Data.Tables befindet sich in der Vorschauphase.
Azure Tables-Eingabebindung
Wenn Sie mit einer einzelnen Tabellenentität arbeiten, kann die Azure Tables-Eingabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
Einen serialisierbaren JSON-Typ, der ITableEntity implementiert. | Functions versucht, die Entität in einen POCO-Typ (Plain-Old CLR Object) zu deserialisieren. Der Typ muss ITableEntity implementieren oder über eine Zeichenfolgeneigenschaft RowKey und eine Zeichenfolgeneigenschaft PartitionKey verfügen. |
TableEntity1 | Die Entität als wörterbuchähnlicher Typ. |
Beim Arbeiten mit mehreren Entitäten aus einer Abfrage kann die Azure Tables-Eingabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
IEnumerable<T> , wobei T ITableEntity implementiert. |
Eine Enumeration von Entitäten, die von der Abfrage zurückgegeben werden. Jeder Eintrag stellt eine Entität dar. Der Typ T muss ITableEntity implementieren oder über eine Zeichenfolgeneigenschaft RowKey und eine Zeichenfolgeneigenschaft PartitionKey verfügen. |
TableClient1 | Ein Client, der mit der Tabelle verbunden ist. Dies bietet die größte Kontrolle für die Verarbeitung der Tabelle und kann zum Schreiben in die Tabelle 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.Tables 1.2.0 oder höher und die gemeinsamen Abhängigkeiten für SDK-Typbindungen verweisen.
Azure Tables-Ausgabebindung
Wenn die Funktion in eine einzelne Entität schreiben soll, kann die Blobausgabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
Einen serialisierbaren JSON-Typ, der [ITableEntity] implementiert. | Functions versucht, einen POCO-Typ (Plain-Old CLR Object) als die Entität zu serialisieren. Der Typ muss [ITableEntity] implementieren oder über eine Zeichenfolgeneigenschaft RowKey und eine Zeichenfolgeneigenschaft PartitionKey verfügen. |
Wenn die Funktion in mehrere Entitäten schreiben soll, kann die Blobausgabebindung an die folgenden Typen gebunden werden:
type | BESCHREIBUNG |
---|---|
T[] , wobei T einer der einzelnen Entitätstypen ist. |
Ein Array, das mehrere Entitäten enthält. Jeder Eintrag stellt eine Entität dar. |
Erstellen und verwenden Sie für andere Ausgabeszenarien einen TableClient mit anderen Typen aus Azure.Data.Tables 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 .