Stocker des données non structurées à l’aide d’Azure Cosmos DB et d’Azure Functions

Azure Cosmos DB est un excellent moyen de stocker des données JSON et non structurées. Combiné à Azure Functions, Azure Cosmos DB rend le stockage de données simple et rapide avec beaucoup moins de code que pour stocker des données dans une base de données relationnelle.

Notes

À l’heure actuelle, le déclencheur Azure Cosmos DB, les liaisons d’entrée et les liaisons de sortie fonctionnent uniquement avec les comptes d’API SQL et d’API Graph.

Dans Azure Functions, les liaisons d’entrée et de sortie fournissent une méthode déclarative pour se connecter à des données de service externe à partir de votre fonction. Dans cet article, découvrez comment mettre à jour une fonction existante pour ajouter une liaison de sortie qui stocke des données non structurées dans un document Azure Cosmos DB.

Prérequis

Pour suivre ce tutoriel :

Cette rubrique utilise comme point de départ les ressources créées dans Créer votre première fonction à partir du portail Azure. Si vous ne l’avez pas déjà fait, suivez ces étapes maintenant pour créer votre application de la fonction.

Création d’un compte Azure Cosmos DB

Vous devez disposer d’un compte Azure Cosmos DB qui utilise l’API SQL avant de créer la liaison de sortie.

  1. Dans le menu du portail Azure ou dans la page d’accueil, sélectionnez Créer une ressource.

  2. Rechercher Azure Cosmos DB. Sélectionnez Créer>Azure Cosmos DB.

  3. Dans la page Création d’un compte Azure Cosmos DB, sélectionnez l’option Créer dans la section Azure Cosmos DB for NoSQL.

    Azure Cosmos DB fournit plusieurs API :

    • NoSQL, pour des données de document
    • PostgreSQL
    • MongoDB, pour des données de document
    • Apache Cassandra
    • Table de charge de travail
    • Apache Gremlin, pour des données graphiques

    Pour en savoir plus sur l’API pour NoSQL, consultez Bienvenue dans Azure Cosmos DB.

  4. Sur la page Créer un compte Azure Cosmos DB, entrez les paramètres de base du nouveau compte Azure Cosmos DB.

    Paramètre valeur Description
    Abonnement Nom d’abonnement Sélectionnez l’abonnement Azure que vous souhaitez utiliser pour ce compte Azure Cosmos DB.
    Groupe de ressources Nom de groupe ressources Sélectionnez un groupe de ressources ou sélectionnez Créer, puis entrez un nom unique pour le nouveau groupe de ressources.
    Nom du compte Un nom unique Entrez un nom pour identifier votre compte Azure Cosmos DB. Étant donné que documents.azure.com est ajouté au nom que vous fournissez pour créer votre URI, utilisez un nom unique. Le nom ne peut contenir que des lettres minuscules, des chiffres et le caractère trait d’union (-). Il doit comporter entre 3 et 44 caractères.
    Emplacement La région la plus proche de vos utilisateurs Sélectionnez la zone géographique dans laquelle héberger votre compte Azure Cosmos DB. Utilisez l’emplacement le plus proche de vos utilisateurs pour leur donner l’accès le plus rapide possible aux données.
    Mode de capacité Débit approvisionné ou Serverless Sélectionnez Débit approvisionné pour créer un compte dans mode de débit approvisionné. Sélectionnez serverless pour créer un compte en mode serverless.
    Appliquer la remise de niveau gratuit Azure Cosmos DB Appliquer ou Ne pas appliquer Avec le niveau gratuit d’Azure Cosmos DB, vous recevez gratuitement 1000 RU/s et 25 Go de stockage dans un compte. Découvrez-en plus sur le niveau gratuit.
    Limiter le débit total du compte Sélectionné ou non Limiter la quantité totale de débit pouvant être approvisionné sur ce compte. Cette limite empêche les frais inattendus liés au débit approvisionné. Vous pouvez mettre à jour ou supprimer cette limite une fois votre compte créé.

    Vous pouvez avoir un seul compte Azure Cosmos DB de niveau gratuit par abonnement Azure et vous devez vous inscrire lors de la création du compte. Si vous ne voyez pas l’option permettant d’appliquer la remise de niveau gratuit, cela signifie qu’un autre compte dans l’abonnement a déjà été activé avec le niveau gratuit.

    Screenshot shows the Create Azure Cosmos DB Account page.

    Remarque

    Les options suivantes ne sont pas disponibles si vous sélectionnez Serverless comme Mode de capacité :

    • Appliquer la remise de niveau gratuit
    • Limiter le débit total du compte
  5. Sous l’onglet Distribution globale, configurez les informations suivantes. Pour ce démarrage rapide, vous pouvez conserver les valeurs par défaut :

    Paramètre valeur Description
    Géoredondance Désactiver Activez ou désactivez la diffusion mondiale sur votre compte en appairant votre région avec une région correspondante. Vous pourrez ajouter d’autres régions à votre compte ultérieurement.
    Écritures multirégions Désactiver La fonctionnalité d’écritures multirégions vous permet de tirer parti du débit provisionné pour vos bases de données et conteneurs à travers le monde.
    Zones de disponibilité Désactiver Les zones de disponibilité vous permettent d’accroître la disponibilité et d’améliorer la résilience de votre application.

    Notes

    Les options suivantes ne sont pas disponibles si vous sélectionnez Serverless comme Mode de capacité sur la page Informations de base précédente :

    • Géo-redondance
    • Écritures multirégions
  6. Si vous le souhaitez, vous pouvez configurer des informations supplémentaires sous les onglets suivants :

    • Mise en réseau. Configurez l’accès à partir d’un réseau virtuel.
    • Stratégie de sauvegarde. Configurez une stratégie de sauvegarde périodique ou continue.
    • Chiffrement. Utilisez une clé gérée par le service ou une clé gérée par le client.
    • Tags (balises). Les étiquettes sont des paires nom/valeur qui vous permettent de catégoriser les ressources et d’afficher une facturation centralisée en appliquant la même étiquette à plusieurs ressources et groupes de ressources.
  7. Sélectionnez Revoir + créer.

  8. Passez en revue les paramètres du compte, puis sélectionnez Créer. La création du compte prend quelques minutes. Attendez que la page du portail affiche Votre déploiement est terminé.

    Screenshot shows that your deployment is complete.

  9. Sélectionnez Accéder à la ressource pour accéder à la page du compte Azure Cosmos DB.

    Screenshot shows the Azure Cosmos DB account page.

Ajouter une liaison de sortie

  1. Dans le portail Azure, accédez à l’application de fonction que vous avez créée précédemment et sélectionnez-la.

  2. Sélectionnez Fonctions, puis sélectionnez la fonction HttpTrigger.

    Select your Http function in the Azure portal.

  3. Sélectionnez Intégration et + Ajouter une sortie.

    Add an Azure Cosmos DB output binding.

  4. Utilisez les paramètres Créer une sortie comme spécifié dans le tableau :

    Configure Azure Cosmos DB output binding.

    Paramètre Valeur suggérée Description
    Type de liaison Azure Cosmos DB Nom du type de liaison à sélectionner pour créer la liaison de sortie à Azure Cosmos DB.
    Nom du paramètre de document taskDocument Nom qui fait référence à l’objet Azure Cosmos DB dans le code.
    Nom de la base de données taskDatabase Nom de la base de données pour l’enregistrement des documents.
    Nom de la collection taskCollection Nom de la collection de bases de données.
    Si la valeur est true, crée la collection et la base de données Azure Cosmos DB Oui La collection n’existe pas, vous devez la créer.
    Connexion de compte Azure Cosmos DB Nouveau paramètre Sélectionnez Nouveau, puis choisissez Compte Azure Cosmos DB, le Compte de base de données que vous avez créé précédemment, puis sélectionnez OK. Crée un paramètre d’application pour votre connexion de compte. Ce paramètre est utilisé par la liaison pour se connecter à la base de données.
  5. Sélectionnez OK pour créer la liaison.

Mettre à jour le code de fonction

Remplacez le code de fonction existant par le code suivant, dans le langage de votre choix :

Remplacez la fonction C# existante par le code suivant :

#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();
    }
}

Cet exemple de code lit les chaînes de requête HTTP et les assigne aux champs de l’objet taskDocument. La liaison taskDocument envoie les données d’objet de ce paramètre de liaison pour les stocker dans la base de données du document lié. La base de données est créée la première fois que la fonction s’exécute.

Tester la fonction et la base de données

  1. Sélectionnez Test/exécution. Sous Requête, sélectionnez + Ajouter un paramètre et ajoutez les paramètres suivants à la chaîne de requête :

    • name
    • task
    • duedate

    Test the function.

  2. Sélectionnez Exécuter et vérifiez que l’état 200 est renvoyé.

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

  3. Dans le portail Azure, recherchez et sélectionnez Azure Cosmos DB.

    Search for the Azure Cosmos DB service.

  4. Sélectionnez votre compte Azure Cosmos DB, puis sélectionnez Explorateur de données.

  5. Développez les nœuds TaskCollection, sélectionnez le nouveau document et confirmez que le document contient des valeurs de votre chaîne de requête, ainsi que des métadonnées supplémentaires.

    Verify the string values in your document.

Vous êtes parvenu à ajouter une liaison à votre déclencheur HTTP pour stocker des données non structurées dans une instance Azure Cosmos DB.

Nettoyer les ressources

Au cours des étapes précédentes, vous avez créé des ressources Azure au sein d’un groupe de ressources. Si vous ne pensez pas avoir besoin de ces ressources à l’avenir, vous pouvez les supprimer en supprimant le groupe de ressources.

Dans le menu ou la page d’accueil du portail Azure, sélectionnez Groupes de ressources. Ensuite, dans la page Groupes de ressources, sélectionnez myResourceGroup.

Dans la page myResourceGroup, assurez-vous que les ressources répertoriées sont bien celles que vous souhaitez supprimer.

Sélectionnez Supprimer le groupe de ressources, tapez myResourceGroup dans la zone de texte pour confirmer, puis sélectionnez Supprimer.

Étapes suivantes

Pour en savoir plus sur la liaison à une instance Azure Cosmos DB, consultez Liaisons Azure Cosmos DB Azure Functions.