Speichern von unstrukturierten Daten mit Azure Functions und Azure Cosmos DB

Azure Cosmos DB eignet sich hervorragend zum Speichern von unstrukturierten Daten und JSON-Daten. In Kombination mit Azure Functions ermöglicht Azure Cosmos DB das schnelle und einfache Speichern von Daten. Dabei ist viel weniger Code erforderlich als beim Speichern von Daten in einer relationalen Datenbank.

Hinweis

Derzeit funktionieren der Azure Cosmos DB-Trigger, Eingabebindungen und Ausgabebindungen ausschließlich mit SQL- und Graph-API-Konten.

Eingabe- und Ausgabebindungen bieten in Azure Functions eine deklarative Möglichkeit, eine Verbindung mit externen Dienstdaten Ihrer Funktion herzustellen. In diesem Artikel erfahren Sie, wie Sie eine bereits vorhandene Funktion aktualisieren, um eine Ausgabebindung hinzuzufügen, die unstrukturierte Daten in einem Azure Cosmos DB-Dokument speichert.

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

In diesem Thema werden als Ausgangspunkt die Ressourcen verwendet, die unter Erstellen Ihrer ersten Funktion im Azure-Portal erstellt wurden. Sofern nicht bereits geschehen, führen Sie nun diese Schritte zum Erstellen Ihrer Funktionen-App durch.

Erstellen eines Azure Cosmos DB-Kontos

Sie müssen über ein Azure Cosmos DB-Konto verfügen, für das die SQL-API verwendet wird, bevor Sie die Ausgabebindung erstellen.

  1. Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus.

  2. Suche Sie nach Azure Cosmos DB. Wählen Sie Erstellen>Azure Cosmos DB aus.

  3. Wählen Sie auf der Seite Erstellen eines Azure Cosmos DB-Kontos im Abschnitt Azure Cosmos DB for NoSQL die Option Erstellen aus.

    Azure Cosmos DB bietet mehrere APIs:

    • NoSQL, für Dokumentdaten
    • PostgreSQL
    • MongoDB, für Dokumentdaten
    • Apache Cassandra
    • Tabelle
    • Apache Gremlin, für Graphdaten

    Weitere Informationen zur API für NoSQL finden Sie unter Willkommen bei Azure Cosmos DB.

  4. Geben Sie auf der Seite Azure Cosmos DB-Konto erstellen die grundlegenden Einstellungen für das neue Azure Cosmos DB-Konto ein.

    Einstellung Wert BESCHREIBUNG
    Subscription Abonnementname Wählen Sie das Azure-Abonnement aus, das Sie für dieses Azure Cosmos DB-Konto verwenden möchten.
    Ressourcengruppe Ressourcengruppenname Wählen Sie eine Ressourcengruppe aus, oder wählen Sie Neu erstellen aus, und geben Sie einen eindeutigen Namen für die Ressourcengruppe ein.
    Kontoname Ein eindeutiger Name Geben Sie einen Namen zur Identifizierung Ihres Azure Cosmos DB-Kontos ein. Da documents.azure.com an den Namen angefügt wird, die Sie für die URI-Erstellung angeben, muss der Name eindeutig sein. Der Name darf nur Kleinbuchstaben, Zahlen und den Bindestrich (-) enthalten. Er muss 3–44 Zeichen umfassen.
    Standort Die Region, die Ihren Benutzern am nächsten liegt Wählen Sie einen geografischen Standort aus, an dem Ihr Azure Cosmos DB-Konto gehostet werden soll. Verwenden Sie den Standort, der Ihren Benutzern am nächsten ist, damit sie möglichst schnell auf die Daten zugreifen können.
    Kapazitätsmodus Bereitgestellter Durchsatz oder Serverlos Wählen Sie Bereitgestellter Durchsatz aus, um ein Konto im Modus Bereitgestellter Durchsatz zu erstellen. Wählen Sie Serverlos aus, um ein Konto im Modus Serverlos zu erstellen.
    Anwenden des Rabatts für den Free-Tarif von Azure Cosmos DB Anwenden oder Nicht anwenden Mit dem Azure Cosmos DB-Tarif „Free“ erhalten Sie die ersten 1.000 RUs/Sek. sowie 25 GB Speicher kostenlos in einem Konto. Weitere Informationen zum Tarif „Free“
    Beschränken des gesamten Kontodurchsatzes Ausgewählt sein oder nicht Begrenzen Sie den Gesamtdurchsatz, der für dieses Konto bereitgestellt werden kann. Dieser Grenzwert verhindert unerwartete Gebühren im Zusammenhang mit bereitgestelltem Durchsatz. Sie können diesen Grenzwert anpassen oder entfernen, nachdem Ihr Konto erstellt wurde.

    Sie können pro Azure-Abonnement maximal ein Azure Cosmos DB-Konto im Free-Tarif einrichten und müssen sich beim Erstellen des Kontos registrieren. Wird die Option zum Anwenden des tarifspezifischen Rabatts für den Free-Tarif nicht angezeigt, bedeutet dies, dass bereits ein anderes Konto im Abonnement mit dem Free-Tarif aktiviert wurde.

    Screenshot shows the Create Azure Cosmos DB Account page.

    Hinweis

    Die folgenden Optionen sind nicht verfügbar, wenn Sie als Kapazitätsmodus die Option Serverlos auswählen:

    • Tarifspezifischen Rabatt für den Free-Tarif anwenden
    • Beschränken des gesamten Kontodurchsatzes
  5. Konfigurieren Sie auf der Registerkarte Globale Verteilung die folgenden Details. Für diesen Schnellstart können Sie die Standardwerte beibehalten:

    Einstellung Wert Beschreibung
    Georedundanz Deaktivieren Aktivieren oder deaktivieren Sie die globale Verteilung für Ihr Konto, indem Sie Ihre Region mit einer Region koppeln. Sie können später weitere Regionen zu Ihrem Konto hinzufügen.
    Schreibvorgänge in mehreren Regionen Deaktivieren Mit der Funktion zum Schreiben in mehreren Regionen können Sie den bereitgestellten Durchsatz für Ihre Datenbanken und Container in der ganzen Welt nutzen.
    Verfügbarkeitszonen Deaktivieren Verfügbarkeitszonen helfen Ihnen, die Verfügbarkeit und Resilienz Ihrer Anwendung weiter zu verbessern.

    Hinweis

    Die folgenden Optionen sind nicht verfügbar, wenn Sie als Kapazitätsmodus auf der vorigen Seite Grundlagen die Option Serverlos auswählen:

    • Georedundanz
    • Schreibvorgänge in mehreren Regionen
  6. Optional können Sie auf den folgenden Registerkarten weitere Details konfigurieren:

    • Netzwerke. Konfigurieren des Zugriffs über virtuelle Netzwerke.
    • Sicherungsrichtlinie. Konfigurieren Sie eine Richtlinie für regelmäßige oder fortlaufende Sicherungen.
    • Verschlüsselung. Verwenden Sie entweder einen vom Dienst verwalteten Schlüssel oder einen kundenseitig verwalteten Schlüssel.
    • Tags. Tags sind Name/Wert-Paare, die Ihnen das Kategorisieren von Ressourcen und die Anzeige einer konsolidierten Abrechnung ermöglichen, indem Sie dasselbe Tag auf mehrere Ressourcen und Ressourcengruppen anwenden.
  7. Klicken Sie auf Überprüfen + erstellen.

  8. Überprüfen Sie die Kontoeinstellungen, und wählen Sie anschließend Erstellen aus. Die Erstellung des Kontos dauert einige Minuten. Warten Sie, bis auf der Portalseite Ihre Bereitstellung wurde abgeschlossen. angezeigt wird.

    Screenshot shows that your deployment is complete.

  9. Wählen Sie Zu Ressource wechseln aus, um zur Seite des Azure Cosmos DB-Kontos zu wechseln.

    Screenshot shows the Azure Cosmos DB account page.

Hinzufügen einer Ausgabebindung

  1. Navigieren Sie im Azure-Portal zu der zuvor erstellten Funktions-App, und wählen Sie sie aus.

  2. Wählen Sie App Funktionen und dann „HTTP-Triggerfunktion“ aus.

    Select your Http function in the Azure portal.

  3. Wählen Sie Integration und dann + Ausgabe hinzufügen aus.

    Add an Azure Cosmos DB output binding.

  4. Verwenden Sie die Einstellungen für Ausgabe erstellen wie in der folgenden Tabelle angegeben:

    Configure Azure Cosmos DB output binding.

    Einstellung Vorgeschlagener Wert BESCHREIBUNG
    Bindungstyp Azure Cosmos DB Der Name des Bindungstyps, der ausgewählt werden soll, um die Ausgabebindung mit Azure Cosmos DB zu erstellen.
    Dokumentparametername taskDocument Name, der auf das Azure Cosmos DB-Objekt im Code verweist.
    Datenbankname taskDatabase Name der Datenbank zum Speichern von Dokumenten
    Sammlungsname taskCollection Name der Datenbanksammlung.
    Erstellt die Azure Cosmos DB-Datenbank und -Sammlung, falls zutreffend Ja Die Sammlung ist noch nicht vorhanden und muss erstellt werden.
    Azure Cosmos DB-Kontoverbindung Neue Einstellung Wählen Sie Neu > Azure Cosmos DB-Konto und dann das zuvor erstellte Datenbankkonto aus. Wählen Sie dann OK aus. Eine Anwendungseinstellung für Ihre Kontoverbindung wird erstellt. Diese Einstellung wird von der Bindung verwendet, um die Verbindung mit der Datenbank herzustellen.
  5. Wählen Sie OK aus, um die Bindung zu erstellen.

Aktualisieren des Funktionscodes

Ersetzen Sie den vorhandenen Funktionscode durch den folgenden Code in Ihrer gewählten Sprache:

Ersetzen Sie die vorhandene C#-Funktion durch den folgenden Code:

#r "Newtonsoft.Json"

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
    string name = req.Query["name"];
    string task = req.Query["task"];
    string duedate = req.Query["duedate"];

    // We need both name and task parameters.
    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
    {
        taskDocument = new
        {
            name,
            duedate,
            task
        };

        return (ActionResult)new OkResult();
    }
    else
    {
        taskDocument = null;
        return (ActionResult)new BadRequestResult();
    }
}

Dieses Codebeispiel liest die Abfragezeichenfolgen der HTTP-Anforderung und weist sie Feldern im taskDocument-Objekt zu. Die taskDocument-Bindung sendet die Objektdaten aus diesem Bindungsparameter zur Speicherung an die gebundene Dokumentdatenbank. Die Datenbank wird bei der erstmaligen Ausführung der Funktion erstellt.

Testen der Funktion und der Datenbank

  1. Wählen Sie Testen/Ausführen aus. Wählen Sie unter Abfrage die Option + Parameter hinzufügen aus, und fügen Sie der Abfragezeichenfolge die folgenden Parameter hinzu:

    • name
    • task
    • duedate

    Test the function.

  2. Wählen Sie Ausführen aus, und vergewissern Sie sich, dass der Status „200“ zurückgegeben wird.

    Screenshot shows the HTTP response code 200 status highlighted after selecting Run.

  3. Suchen Sie im Azure-Portal nach Azure Cosmos DB, und wählen Sie den Eintrag aus.

    Search for the Azure Cosmos DB service.

  4. Wählen Sie Ihr Azure Cosmos DB-Konto und dann Data Explorer aus.

  5. Erweitern Sie die TaskCollection-Knoten, wählen Sie das neue Dokument aus, und vergewissern Sie sich, dass es Ihre Abfragezeichenfolgenwerte sowie einige zusätzliche Metadaten enthält.

    Verify the string values in your document.

Sie haben Ihrem HTTP-Trigger erfolgreich eine Bindung hinzugefügt, um unstrukturierte Daten in einer Azure Cosmos DB-Instanz zu speichern.

Bereinigen von Ressourcen

In den vorherigen Schritten haben Sie Azure-Ressourcen in einer Ressourcengruppe erstellt. Wenn Sie diese Ressourcen in Zukunft nicht mehr benötigen, können Sie sie löschen, indem Sie die Ressourcengruppe löschen.

Wählen Sie im Azure-Portalmenü oder auf der Startseite die Option Ressourcengruppen aus. Wählen Sie auf der Seite Ressourcengruppen die Option myResourceGroup aus.

Stellen Sie auf der Seite myResourceGroup sicher, dass die Ressourcen aufgelistet sind, die Sie löschen möchten.

Wählen Sie die Option Löschen aus, geben Sie zur Bestätigung im Textfeld myResourceGroup ein, und wählen Sie anschließend Löschen aus.

Nächste Schritte

Weitere Informationen zu Bindungen an eine Azure Cosmos DB-Instanz finden Sie unter Azure Cosmos DB-Bindungen in Azure Functions.