Partager via


Démarrage rapide : Répondre aux événements de stockage Blob à l’aide d’Azure Functions

Dans ce guide de démarrage rapide, vous utilisez Visual Studio Code pour créer une application qui répond aux événements dans un conteneur de stockage Blob. Après avoir testé le code localement à l’aide d’un émulateur, vous le déployez sur une nouvelle application de fonction serverless s’exécutant dans un plan Flex Consumption dans Azure Functions.

Le projet utilise l’extension Azure Developer CLI (azd) avec Visual Studio Code pour simplifier l’initialisation et la vérification de votre code de projet localement, ainsi que le déploiement de votre code sur Azure. Ce déploiement suit les bonnes pratiques actuelles pour les déploiements Azure Functions sécurisés et scalables.

Cet article prend en charge la version 4 du modèle de programmation Node.js pour Azure Functions.

Cet article prend en charge la version 2 du modèle de programmation Python pour Azure Functions.

Prerequisites

  • Node.js 18.x ou version ultérieure. Utilisez la commande node --version pour vérifier la version que vous utilisez.

Initialiser le projet

Utilisez la azd init commande de la palette de commandes pour créer un projet de code Azure Functions local à partir d’un modèle.

  1. Dans Visual Studio Code, ouvrez un dossier ou un espace de travail dans lequel vous souhaitez créer votre projet.

  2. Appuyez sur F1 pour ouvrir la palette de commandes, recherchez et exécutez la commande Azure Developer CLI (azd): Initialize App (init), puis choisissez Sélectionner un modèle.

    Il se peut qu'il y ait un léger retard pendant que azd initialise le dossier ou l'espace de travail actuels.

  1. Lorsque vous y êtes invité, choisissez Sélectionner un modèle, puis recherchez et sélectionnez Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.

  2. Lorsque vous y êtes invité dans le terminal, entrez un nom d’environnement unique, tel que blobevents-dotnet.

    Cette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier ou l’espace de travail actif.

  1. Lorsque vous y êtes invité, choisissez Sélectionner un modèle, puis recherchez et sélectionnez Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.

  2. Lorsque vous y êtes invité dans le terminal, entrez un nom d’environnement unique, tel que blobevents-python.

    Cette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier ou l’espace de travail actif.

  1. Lorsque vous y êtes invité, choisissez Sélectionner un modèle, puis recherchez et sélectionnez Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.

  2. Lorsque vous y êtes invité, entrez un nom d’environnement unique, tel que blobevents-typescript.

    Cette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier ou l’espace de travail actif.

  1. Lorsque vous y êtes invité, choisissez Sélectionner un modèle, puis recherchez et sélectionnez Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.

  2. Lorsque vous y êtes invité, entrez un nom d’environnement unique, tel que blobevents-java.

    Cette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier ou l’espace de travail actif.

  1. Lorsque vous y êtes invité, choisissez Sélectionner un modèle, puis recherchez et sélectionnez Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.

  2. Lorsque vous y êtes invité, entrez un nom d’environnement unique, tel que blobevents-powershell.

    Cette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier ou l’espace de travail actif.

Dans azd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Il fait également partie du nom du groupe de ressources que vous créez dans Azure.

Ajouter le fichier local.settings.json

Functions a besoin du fichier local.settings.json pour configurer l’hôte lors de l’exécution locale.

  1. Exécutez cette commande pour accéder au dossier de l’application src :

    cd src
    
  1. Créez un fichier nommé local.settings.json dans le src dossier qui contient ces données JSON :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Créez un fichier nommé local.settings.json dans le src dossier qui contient ces données JSON :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "java",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Créez un fichier nommé local.settings.json dans le src dossier qui contient ces données JSON :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "node",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Créez un fichier nommé local.settings.json dans le src dossier qui contient ces données JSON :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "powershell",
            "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Créez un fichier nommé local.settings.json dans le src dossier qui contient ces données JSON :

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "python",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    

Créer et activer un environnement virtuel

Dans le src dossier, exécutez ces commandes pour créer et activer un environnement virtuel nommé .venv:

python3 -m venv .venv
source .venv/bin/activate

Si Python n’installe pas le package venv sur votre distribution Linux, exécutez la commande suivante :

sudo apt-get install python3-venv

Configurer l’émulateur de stockage local

Utilisez l’émulateur Azurite pour exécuter votre projet de code localement avant de créer et d’utiliser des ressources Azure.

  1. Si ce n’est déjà fait, installez Azurite.

  2. Appuyez sur F1. Dans la palette de commandes, recherchez et exécutez la commande Azurite: Start pour démarrer l’émulateur de stockage local.

  3. Dans la zone Azure, déroulez l’espace de travail>comptes de stockage attachés>, cliquez avec le bouton droit (Ctrl-clic sur Mac) sur Conteneurs d’objets blob, sélectionnez Créer un conteneur d’objets blob..., puis créez ces deux conteneurs de stockage d’objets blob dans l’émulateur local :

    • unprocessed-pdf: conteneur que le déclencheur surveille pour les événements de stockage.
    • processed-pdf: conteneur où la fonction envoie des objets blob traités en tant que sortie.
  4. Développez Conteneurs Blob, cliquez avec le bouton droit (Ctrl-cliquez sur Mac) sur unprocessed-pdf, sélectionnez Charger des fichiers..., cliquez sur Entrée pour accepter le répertoire racine, puis chargez les fichiers PDF à partir du dossier du projet data.

Lorsque vous exécutez localement, vous pouvez utiliser REST pour déclencher la fonction en simulant la fonction recevant un message à partir d’un abonnement aux événements.

Exécuter la fonction localement

Visual Studio Code s’intègre aux outils Azure Functions Core pour vous permettre d’exécuter ce projet sur votre ordinateur de développement local à l’aide de l’émulateur Azurite. La PDFProcessorSTORAGE variable d’environnement définit la connexion de compte de stockage, qui est également définie "UseDevelopmentStorage=true" dans le fichier local.settings.json lors de l’exécution locale.

  1. Exécutez cette commande à partir du dossier du src projet dans un terminal ou une invite de commandes :

    func start
    
    mvn clean package
    mvn azure-functions:run
    
    npm install
    func start  
    
    npm install
    npm start  
    

    Lorsque l’hôte Functions démarre, il écrit le nom du déclencheur et le type de déclencheur dans la sortie du terminal. Dans Functions, le dossier racine du projet contient le fichier host.json.

  2. Avec Core Tools toujours en cours d'exécution dans le Terminal, ouvrez le fichier test.http dans votre projet et sélectionnez Envoyer une requête pour déclencher la fonction ProcessBlobUpload en envoyant un événement blob de test au webhook d'événement blob.

    Cette étape simule la réception d'un événement provenant d'un abonnement à des événements lors d'une exécution locale, et vous devriez voir la requête et les informations sur le fichier traité écrites dans les journaux. Si vous n’utilisez pas le client REST, vous devez utiliser un autre outil REST sécurisé pour appeler le point de terminaison avec la charge utile dans test.http.

  3. Dans l'espace de travail du conteneur d'objets blob, développez processed-pdf et vérifiez que la fonction a traité le fichier PDF et l'a copié avec un préfixe processed-.

  4. Lorsque vous avez terminé, appuyez sur Ctrl + C dans la fenêtre du terminal pour arrêter le processus hôte func.exe.

Examiner le code (facultatif)

Vous pouvez consulter le code qui définit le déclencheur de blob Event Grid dans le fichier projet ProcessBlobUpload.cs. La fonction montre comment :

  • Utiliser BlobTrigger avec Source = BlobTriggerSource.EventGrid pour le traitement en quasi temps réel
  • Lier à BlobClient pour le blob source et BlobContainerClient à pour la destination
  • Traiter le contenu de l'objet blob et le copier dans un autre conteneur en utilisant des flux

Vous pouvez consulter le code qui définit le déclencheur d'objet blob d'Event Grid dans le fichier projet function_app.py. La fonction montre comment :

  • Utiliser @app.blob_trigger avec source="EventGrid" pour le traitement en quasi temps réel
  • Accéder au contenu d’objet blob à l’aide du InputStream paramètre
  • Copier des fichiers traités dans le conteneur de destination à l’aide du Kit de développement logiciel (SDK) Stockage Azure

Vous pouvez consulter le code qui définit le déclencheur de blob Event Grid dans le fichier de projet processBlobUpload.ts. La fonction montre comment :

  • Utiliser app.storageBlob() avec source: 'EventGrid' pour le traitement en quasi temps réel
  • Accéder au contenu Blob à l'aide du SDK Azure Storage pour Node.js.
  • Traiter et copier des fichiers dans le conteneur de destination de manière asynchrone

Vous pouvez consulter le code qui définit le déclencheur blob Event Grid dans le fichier de projet ProcessBlobUpload.java. La fonction montre comment :

  • Utiliser @BlobTrigger avec source = "EventGrid" pour le traitement en quasi temps réel
  • Accéder au contenu d’objet blob à l’aide du BlobInputStream paramètre
  • Copier des fichiers traités dans le conteneur de destination à l’aide du Kit de développement logiciel (SDK) Stockage Azure pour Java

Vous pouvez consulter le code qui définit le déclencheur d’objet blob Event Grid dans le fichier projet ProcessBlobUpload/run.ps1 et le function.jsoncorrespondant. La fonction montre comment :

  • Configurer le déclencheur de blob avec "source": "EventGrid" dans function.json pour un traitement en temps quasi-réel
  • Accédez au contenu des blobs à l'aide des cmdlets PowerShell Azure Storage
  • Traiter et copier des fichiers dans le conteneur de destination à l’aide de modules Azure PowerShell

Après avoir examiné et vérifié votre code de fonction localement, il est temps de publier le projet sur Azure.

Créer des ressources Azure et déployer

Utilisez la azd up commande pour créer l’application de fonction dans un plan Flex Consumption, ainsi que d’autres ressources Azure requises, y compris l’abonnement aux événements. Une fois l’infrastructure prête, azd déploie également votre code de projet sur la nouvelle application de fonction dans Azure.

  1. Dans Visual Studio Code, appuyez sur F1 pour ouvrir la palette de commandes. Recherchez et exécutez la commande Azure Developer CLI (azd): Sign In with Azure Developer CLI, puis connectez-vous à l’aide de votre compte Azure.

  2. Dans la racine du projet, appuyez sur F1 pour ouvrir la palette de commandes. Recherchez et exécutez la commande Azure Developer CLI (azd): Provision and Deploy (up) pour créer les ressources Azure requises et déployer votre code.

  3. Lorsque vous y êtes invité dans la fenêtre terminal, fournissez les paramètres de déploiement requis suivants :

    Prompt Descriptif
    Sélectionner un abonnement Azure à utiliser Choisissez l’abonnement dans lequel vous souhaitez créer vos ressources.
    Nom de l’environnement Environnement utilisé pour gérer un contexte de déploiement unique pour votre application.
    Emplacement Azure Région Azure dans laquelle créer le groupe de ressources qui contient les nouvelles ressources Azure. Seules sont montrées les régions qui prennent actuellement en charge le plan Consommation flexible.

    La azd up commande utilise vos réponses à ces invites avec les fichiers de configuration Bicep pour créer et configurer ces ressources Azure requises, en suivant les meilleures pratiques les plus récentes :

    • Plan Consommation flexible et application de fonction
    • Compte de stockage Azure avec des conteneurs blob
    • Application Insights (recommandé)
    • Stratégies d’accès et rôles pour votre compte
    • Abonnement Event Grid pour les événements blob
    • Connexions de service à service à l’aide d’identités managées (au lieu de chaînes de connexion stockées)

    Une fois la commande terminée, votre application s’exécute dans Azure avec un abonnement aux événements configuré pour déclencher votre fonction lorsque des objets blob sont ajoutés au unprocessed-pdf conteneur.

  4. Notez les AZURE_STORAGE_ACCOUNT_NAME et AZURE_FUNCTION_APP_NAME dans la sortie. Ces noms sont uniques pour votre compte de stockage et votre application de fonction dans Azure, respectivement.

Vérifier la fonction déployée

  1. Dans Visual Studio Code, appuyez sur F1. Dans la palette de commandes, recherchez et exécutez la commande Azure Storage: Upload Files.... Acceptez le répertoire racine, puis, comme avant, chargez un ou plusieurs fichiers PDF à partir du dossier du data projet.

  2. Lorsque vous y êtes invité, sélectionnez le nom de votre nouveau compte de stockage (à partir de AZURE_STORAGE_ACCOUNT_NAME). Sélectionnez les Conteneurs Blob>unprocessed-pdf.

  3. Appuyez sur F1. Dans la palette de commandes, recherchez et exécutez la commande Azure Storage: Open in Explorer. Sélectionnez le même compte de stockage >Blob Containers>processed-pdf, puis Ouvrir dans une nouvelle fenêtre.

  4. Dans l’Explorateur, vérifiez que les fichiers PDF que vous avez chargés ont été traités par votre fonction. La sortie est écrite dans le conteneur processed-pdf avec un préfixe processed-.

Le déclencheur de blob Event Grid traite les fichiers en quelques secondes après avoir été chargés. Cette rapidité démontre les capacités quasi temps réel de cette approche par rapport aux déclencheurs de blob traditionnels basés sur l'interrogation.

Redéployer votre code

Exécutez la azd up commande autant de fois que vous devez provisionner vos ressources Azure et déployer des mises à jour de code sur votre application de fonction.

Note

Les fichiers de code déployés sont toujours remplacés par le dernier package de déploiement.

Vos réponses initiales aux invites d’azd et toutes les variables d’environnement générées par azd sont stockées localement dans votre environnement nommé. Utilisez la commande azd env get-values pour passer en revue toutes les variables de votre environnement qui ont été utilisées lors de la création de ressources Azure.

Nettoyer les ressources

Lorsque vous avez terminé d’utiliser votre application de fonction et vos ressources associées, utilisez cette commande pour supprimer l’application de fonction et ses ressources associées d’Azure. Cette action vous permet d’éviter d’entraîner d’autres coûts :

azd down --no-prompt

Note

L’option --no-prompt indique à azd de supprimer votre groupe de ressources sans confirmation de votre part.

Cette commande n’affecte pas votre projet de code local.