Tutoriel : Déclencher des fonctions Azure sur des conteneurs d’objets blob à l’aide d’un abonnement aux événements

Si vous utilisez des versions antérieures du déclencheur Stockage Blob avec Azure Functions, les exécutions sont souvent retardées, car le déclencheur interroge le conteneur blob pour savoir s’il existe des mises à jour. Vous pouvez réduire la latence en déclenchant votre fonction à l’aide d’un abonnement aux événements sur le même conteneur. L’abonnement aux événements utilise l’infrastructure Event Grid pour transférer les modifications vers le conteneur au fur et à mesure qu’elles se produisent. Vous pouvez implémenter cette fonctionnalité à l’aide des dernières extensions Azure Functions.

Cet article montre comment créer une fonction qui s’exécute selon les événements déclenchés quand un objet blob est ajouté à un conteneur. Vous allez utiliser Visual Studio Code pour le développement local et vérifier que la fonction fonctionne localement avant de déployer votre projet sur Azure.

  • Créez un compte de stockage v2 universel dans Stockage Azure.
  • Créez un conteneur dans le stockage d’objets blob.
  • Créez une fonction déclenchée par Stockage Blob (déclenchement piloté par les événements).
  • Créez un abonnement aux événements auprès d’un conteneur d’objets blob.
  • Effectuez un débogage local à l’aide de ngrok en chargeant les fichiers.
  • Déployez sur Azure et créez un abonnement aux événements filtré.

Important

Cet article utilise des onglets pour prendre en charge plusieurs versions du modèle de programmation Node.js. Le modèle v4 est en disponibilité générale. Il est conçu pour offrir une expérience plus flexible et intuitive aux développeurs JavaScript et TypeScript. Pour plus d’informations sur le fonctionnement du modèle v4, reportez-vous au guide du développeur Azure Functions Node.js. Pour plus d’informations sur les différences entre v3 et v4, consultez le guide de migration.

Prérequis

  • L’utilitaire ngrok, qui permet à Azure d’effectuer un appel dans votre fonction exécutée localement.

  • Extension Stockage Azure pour Visual Studio Code, version 5.x minimum.

Notes

L’extension Stockage Azure pour Visual Studio Code est actuellement en préversion.

Créez un compte de stockage.

Pour utiliser un abonnement aux événements avec Stockage Azure, vous aurez besoin d’un compte de stockage v2 à usage général. Par défaut, vous pouvez créer ce compte de stockage à partir de votre projet Visual Studio Code quand l’extension Stockage Azure est installée.

  1. Dans Visual Studio Code, ouvrez la palette de commandes (appuyez sur F1), entrez Azure Storage: Create Storage Account.... En suivant les invites, saisissez les informations suivantes :

    Prompt Action
    Entrer le nom du nouveau compte de stockage Spécifiez un nom global unique. Les noms des comptes de stockage doivent comporter de 3 à 24 caractères avec uniquement des minuscules et des chiffres. Pour une identification plus simple, nous utiliserons le même nom pour le groupe de ressources et l’application de fonction.
    Sélectionnez un emplacement pour les nouvelles ressources Pour de meilleures performances, choisissez une région proche de vous.

    L’extension crée un compte de stockage v2 à usage général avec le nom que vous avez fourni. Le même nom est également utilisé pour le groupe de ressources qui contient le compte de stockage.

  2. Après avoir créé le compte de stockage, ouvrez la palette de commandes (appuyez sur F1) et entrez Azure Storage: Create Blob Container.... En suivant les invites, saisissez les informations suivantes :

    Prompt Action
    Sélectionner une ressource Sélectionnez le compte de stockage que vous avez créé.
    Entrer un nom pour le conteneur d’objets blob Entrez samples-workitems, qui est le nom du conteneur référencé dans votre projet de code.

Vous disposez à présent du conteneur blob. Vous pouvez maintenant créer la fonction qui se déclenche sur ce conteneur et l’abonnement aux événements qui remet les événements à votre fonction.

Créer une fonction déclenchée par Stockage Blob

Quand vous créez une fonction déclenchée par Stockage Blob à l’aide de Visual Studio Code, vous créez également un projet. Vous devrez modifier la fonction pour qu’elle consomme un abonnement aux événements comme source au lieu d’utiliser le conteneur interrogé classique.

  1. Ouvrez votre application de fonction dans Visual Studio Code.

  2. Ouvrez la palette de commandes (appuyez sur F1), entrez Azure Functions: Create Function... et sélectionnez Créer un projet.

  3. Sélectionnez l’emplacement de répertoire pour votre espace de travail de projet. Veillez à créer un dossier ou à choisir un dossier vide pour l’espace de travail de projet.

    Ne choisissez pas un dossier de projet qui fait déjà partie d’un espace de travail.

  4. En suivant les invites, saisissez les informations suivantes :

    Prompt Action
    Sélectionner une langue Sélectionnez C#.
    Sélectionner un runtime .NET Sélectionnez .NET 6.0 Isolated LTS pour l’exécution dans un processus Worker isolé ou .NET 6.0 LTSpour in-process.
    Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Azure Blob Storage trigger.
    Fournir un nom de fonction Entrez BlobTriggerEventGrid.
    Fournir un espace de noms Entrez My.Functions.
    Sélectionnez un paramètre dans « local.setting.json » Sélectionnez Create new local app setting.
    Sélectionner un compte de stockage Sélectionnez le compte de stockage que vous avez créé dans la liste.
    Chemin dans votre compte de stockage qui est surveillé par le déclencheur Acceptez la valeur par défaut samples-workitems.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
    Prompt Action
    Sélectionner une langue Sélectionnez Python.
    Sélectionner un interpréteur Python pour créer un environnement virtuel Sélectionnez votre interpréteur Python préféré. Si une option n’est pas affichée, entrez le chemin complet de votre fichier binaire Python.
    Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Azure Blob Storage trigger.
    Fournir un nom de fonction Entrez BlobTriggerEventGrid.
    Sélectionnez un paramètre dans « local.setting.json » Sélectionnez Create new local app setting.
    Sélectionner un compte de stockage Sélectionnez le compte de stockage que vous avez créé dans la liste.
    Chemin dans votre compte de stockage qui est surveillé par le déclencheur Acceptez la valeur par défaut samples-workitems.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
    Prompt Action
    Sélectionner une langue Sélectionnez Java.
    Sélectionner une version de Java Sélectionnez Java 11 ou Java 8, la version Java sur laquelle vos fonctions s’exécutent dans Azure et que vous avez vérifiée localement.
    Fournir un ID de groupe Sélectionnez com.function.
    Fournir un ID d’artefact Sélectionnez BlobTriggerEventGrid.
    Fournir une version Sélectionnez 1.0-SNAPSHOT.
    Fournir un nom de package Sélectionnez com.function.
    Fournir un nom d’application Acceptez le nom généré qui commence par BlobTriggerEventGrid.
    Sélectionner l’outil de génération pour le projet Java Sélectionnez Maven.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
    Prompt Action
    Sélectionner un langage pour votre projet de fonction Sélectionnez TypeScript.
    Sélectionner un modèle de programmation TypeScript Sélectionnez Model V4.
    Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Azure Blob Storage trigger.
    Fournir un nom de fonction Entrez BlobTriggerEventGrid.
    Sélectionnez un paramètre dans « local.setting.json » Sélectionnez Create new local app setting.
    Sélectionner un compte de stockage Sélectionner le compte de stockage que vous avez créé.
    Chemin dans votre compte de stockage qui est surveillé par le déclencheur Acceptez la valeur par défaut samples-workitems.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
    Prompt Action
    Sélectionner un langage pour votre projet de fonction Sélectionnez JavaScript.
    Sélectionner un modèle de programmation JavaScript Sélectionnez Model V4.
    Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Azure Blob Storage trigger.
    Fournir un nom de fonction Entrez BlobTriggerEventGrid.
    Sélectionnez un paramètre dans « local.setting.json » Sélectionnez Create new local app setting.
    Sélectionner un compte de stockage Sélectionner le compte de stockage que vous avez créé.
    Chemin dans votre compte de stockage qui est surveillé par le déclencheur Acceptez la valeur par défaut samples-workitems.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
    Prompt Action
    Sélectionner un langage pour votre projet de fonction Sélectionnez PowerShell.
    Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Azure Blob Storage trigger.
    Fournir un nom de fonction Entrez BlobTriggerEventGrid.
    Sélectionnez un paramètre dans « local.setting.json » Sélectionnez Create new local app setting.
    Sélectionner un compte de stockage Sélectionner le compte de stockage que vous avez créé.
    Chemin dans votre compte de stockage qui est surveillé par le déclencheur Acceptez la valeur par défaut samples-workitems.
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Open in current window.
  5. Une fois l’invite affichée, sélectionnez Sélectionner un compte de stockage>Ajouter à l’espace de travail.

Pour simplifier les choses, ce tutoriel réutilise le même compte de stockage avec votre application de fonction. Toutefois, en production, vous pouvez utiliser un compte de stockage distinct avec votre application de fonction. Pour plus d’informations, consultez la section Points importants relatifs au stockage pour Azure Functions.

Mettre à niveau l’extension Stockage

Pour utiliser le déclencheur Stockage Blob basé sur Event Grid, votre fonction nécessite au moins la version 5.x pour l’extension Stockage.

Pour mettre à niveau votre projet vers la version d’extension requise, dans la fenêtre Terminal, exécutez la commande suivante : dotnet add package

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. Ouvrez le fichier projet host.json et inspectez l’élément extensionBundle.

  2. Si extensionBundle.version n’est pas au moins 3.3.0 , remplacez extensionBundle par la version la plus récente :

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

Mettre à jour la fonction pour utiliser des événements

Dans le fichier BlobTriggerEventGrid.cs, ajoutez Source = BlobTriggerSource.EventGrid aux paramètres de l’attribut du déclencheur Blob, par exemple :

[Function("BlobTriggerCSharp")]
public async Task Run([BlobTrigger("samples-workitems/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myBlob, string name, FunctionContext executionContext)
{
    var logger = executionContext.GetLogger("BlobTriggerCSharp");
    logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Size: {myBlob.Length} Bytes");
}

Après avoir créé la fonction, dans le fichier de configuration function.json, ajoutez "source": "EventGrid" à la myBlob liaison, par exemple :

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. Dans le fichier Function.java généré, remplacez le contenu par le code suivant et renommez le fichier BlobTriggerEventGrid.java :

    package com.function;
    
    import com.microsoft.azure.functions.annotation.*;
    import com.microsoft.azure.functions.*;
    
    /**
    * Azure Functions with Azure Blob trigger.
    */
    public class BlobTriggerEventGrid {
        /**
        * This function will be invoked when a new or updated blob is detected at the specified path. The blob contents are provided as input to this function.
        */
        @FunctionName("BlobTriggerEventGrid")
        @StorageAccount("glengatesteventgridblob_STORAGE")
        public void run(
            @BlobTrigger(name = "content", path = "samples-workitems/{name}", dataType = "binary", source = "EventGrid" ) byte[] content,
            @BindingName("name") String name,
            final ExecutionContext context
        ) {
              context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n  Size: " + content.length + " Bytes");
          }
    }
    
  2. Supprimez le fichier de test unitaire associé, qui ne s’applique plus au nouveau type de déclencheur.

Après avoir créé la fonction, ajoutez source: "EventGrid" à l’objet options dans votre fichier TypeScript, par exemple :

import { app, InvocationContext } from '@azure/functions';

export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
    context.log(
        `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
    );
}

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: storageBlobTrigger1,
});

Après avoir créé la fonction, ajoutez source: "EventGrid" à l’objet options dans votre fichier JavaScript, par exemple :

const { app } = require('@azure/functions');

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: (blob, context) => {
        context.log(
            `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
        );
    },
});

Après avoir créé la fonction, dans le fichier de configuration function.json, ajoutez "source": "EventGrid" à la myBlob liaison, par exemple :

{
    "bindings": [
        {
            "name": "myblob",
            "type": "blobTrigger",
            "direction": "in",
            "path": "samples-workitems/{name}",
            "source": "EventGrid",
            "connection": "<NAMED_STORAGE_CONNECTION>"
        }
    ]
}

Commencer un débogage local

Event Grid valide l’URL du point de terminaison quand vous créez un abonnement aux événements dans le portail Azure. Ainsi, pour que vous puissiez créer un abonnement aux événements pour le débogage local, votre fonction doit s’exécuter localement avec l’accès à distance activé par l’utilitaire ngrok. Si votre code de fonction local n’est pas en cours d’exécution et accessible à Azure, vous ne pourrez pas créer l’abonnement aux événements.

Déterminer le point de terminaison du déclencheur blob

Quand votre fonction s’exécute localement, le point de terminaison par défaut utilisé pour un déclencheur de stockage d’objets blob piloté par les événements ressemble à l’URL suivante :

http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid
http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid

Enregistrez ce chemin, que vous utiliserez ultérieurement afin de créer des URL de point de terminaison pour les abonnements aux événements. Si vous avez utilisé un autre nom pour votre fonction déclenchée par Stockage Blob, vous devez modifier la valeur functionName dans la chaîne de requête.

Notes

Étant donné que le point de terminaison gère les événements pour un déclencheur Stockage Blob, son chemin inclut blobs. L’URL du point de terminaison d’un déclencheur Event Grid inclura plutôt eventgrid.

Exécuter ngrok

Pour interrompre une fonction en cours de débogage sur votre machine, vous devez permettre à Azure Event Grid de communiquer avec les fonctions exécutées sur votre ordinateur local.

L’utilitaire ngrok transfère les requêtes externes envoyées à une adresse de serveur proxy générée de manière aléatoire vers une adresse et un port spécifiques sur votre ordinateur local pour appeler le point de terminaison du webhook de la fonction exécutée sur votre machine.

  1. Démarrez ngrok en utilisant la commande suivante :

    ngrok.exe http http://localhost:7071
    

    Au démarrage de l’utilitaire, la fenêtre de commande doit ressembler à la capture d’écran suivante :

    Screenshot that shows the Command Prompt after starting the

  2. Copiez l’URL HTTPS générée lorsque ngrok est exécuté. Cette valeur est utilisée pour déterminer le point de terminaison du webhook sur votre ordinateur exposé avec ngrok.

Important

À ce stade, n’arrêtez pas ngrok. Chaque fois que vous démarrez ngrok, l’URL HTTPS est regénérée avec une valeur différente. Étant donné que le point de terminaison d’un abonnement aux événements ne peut pas être modifié, vous devez créer un abonnement aux événements chaque fois que vous exécutez ngrok.

Sauf si vous créez un compte ngrok, la durée maximale d’une session ngrok est limitée à deux heures.

Générer l’URL du point de terminaison

Le point de terminaison utilisé dans l’abonnement aux événements se compose de trois parties : un nom de serveur avec préfixe, un chemin et une chaîne de requête. Elles sont décrites dans le tableau suivant :

Partie de l’URL Description
Préfixe et nom du serveur Quand votre fonction s’exécute localement, le nom du serveur avec le préfixe https:// provient de l’URL de transfert générée par ngrok. Dans l’URL localhost, l’URL ngrok remplace http://localhost:7071. Pour une exécution dans Azure, vous utiliserez plutôt le serveur d’application de fonction publié, généralement sous la forme https://<FUNCTION_APP_NAME>.azurewebsites.net.
Path La partie chemin de l’URL du point de terminaison provient de l’URL localhost copiée précédemment et ressemble à /runtime/webhooks/blobs pour un déclencheur Stockage Blob. Le chemin pour un déclencheur Event Grid serait /runtime/webhooks/EventGrid
Chaîne de requête Pour tous les langages, y compris .NET Isolé le paramètre functionName=Host.Functions.BlobTriggerEventGrid, sauf pour .NET In-process qui doit être functionName=BlobTriggerEventGrid dans la chaîne de requête, définit le nom de la fonction qui gère l’évènement. Si vous avez utilisé un autre nom pour votre fonction, vous devez modifier cette valeur. Aucune clé d’accès n’est nécessaire pour une exécution locale. Pour une exécution dans Azure, vous devez également inclure un paramètre code= dans l’URL, contenant une clé que vous pouvez obtenir à partir du portail.

La capture d’écran suivante montre un exemple de la façon dont l’URL finale du point de terminaison doit se présenter si vous utilisez un déclencheur Stockage Blob nommé BlobTriggerEventGrid :

Endpoint selection

Démarrer le débogage

Avec ngrok en cours d’exécution, démarrez votre projet local comme suit :

  1. Définissez un point d’arrêt dans votre fonction sur la ligne qui gère la journalisation.

  2. Démarrez une session de débogage.

    Ouvrez un nouveau terminal et exécutez la commande mvn suivante pour démarrer la session de débogage.

    mvn azure-functions:run -DenableDebug
    

    Appuyez sur F5 pour démarrer une session de débogage.

Votre code est en cours d’exécution et ngrok transfère les requêtes ; il est temps de créer un abonnement aux événements auprès du conteneur d’objets blob.

Créer un abonnement à l’événement

Un abonnement aux événements, s’appuyant sur Azure Event Grid, déclenche des événements en fonction des modifications apportées au conteneur d’objets blob lié. Cet événement est ensuite envoyé au point de terminaison du webhook sur le déclencheur de votre fonction. Quand un abonnement aux événements a été créé, l’URL du point de terminaison ne peut plus être modifiée. Ainsi, quand vous avez terminé le débogage local (ou si vous redémarrez ngrok), vous devez supprimer et recréer l’abonnement aux événements.

  1. Dans Visual Studio Code, choisissez l’icône Azure dans la barre d’activité. Dans Ressources, développez votre abonnement, développez Comptes de stockage, cliquez avec le bouton droit sur le compte de stockage que vous avez créé précédemment, puis sélectionnez Ouvrir dans le portail.

  2. Connectez-vous au portail Azure et notez le Groupe de ressources de votre compte de stockage. Vous allez créer vos autres ressources dans le même groupe pour faciliter le nettoyage des ressources quand vous aurez terminé.

  3. Sélectionnez l’option Événements dans le menu de gauche.

    Add storage account event

  4. Dans la fenêtre Événements, sélectionnez le bouton + Abonnement aux événements et spécifiez les valeurs du tableau suivant sous l’onglet De base :

    Paramètre Valeur suggérée Description
    Nom myBlobLocalNgrokEventSub Nom qui identifie l’abonnement aux événements. Vous pouvez utiliser le nom pour trouver rapidement l’abonnement aux événements.
    Schéma d’événement Schéma Event Grid Utilisez le schéma par défaut pour les événements.
    Nom de la rubrique système samples-workitems-blobs Nom de la rubrique, qui représente le conteneur. La rubrique est créée avec le premier abonnement et vous l’utiliserez pour les futurs abonnements aux événements.
    Filtrer les types d’événements Objet blob créé
    Type de point de terminaison Webhook Le déclencheur de stockage d’objets blob utilise un point de terminaison de webhook. Pour un déclencheur Event Grid, vous utiliseriez Azure Functions.
    Point de terminaison Votre point de terminaison d’URL ngrok Utilisez le point de terminaison d’URL ngrok que vous avez déterminé précédemment.
  5. Sélectionnez Confirmer la sélection pour valider l’URL du point de terminaison.

  6. Sélectionnez Créer pour créer l’abonnement aux événements.

Charger un fichier dans le conteneur

Votre abonnement aux événements est à présent en place et votre projet de code et ngrok sont toujours en cours d’exécution. Vous pouvez maintenant charger un fichier dans votre conteneur de stockage pour déclencher votre fonction. Vous pouvez charger un fichier à partir de votre ordinateur vers votre conteneur de stockage d’objets blob à l’aide de Visual Studio Code.

  1. Dans Visual Studio Code, ouvrez la palette de commandes (appuyez sur F1) et tapez Azure Storage: Upload Files....

  2. Dans la boîte de dialogue Ouvrir, choisissez un fichier, de préférence un fichier image binaire qui n’est pas trop volumineux, puis sélectionnez Charger.

  3. Quand vous y êtes invité, indiquez les informations suivantes :

    Paramètre Valeur suggérée Description
    Sélectionner une ressource Nom du compte de stockage Choisissez le nom du compte de stockage que vous avez créé à l’étape précédente.
    Sélectionner un type de ressource Conteneurs d’objets blob Vous effectuez le chargement dans un conteneur d’objets blob.
    Sélectionner un conteneur d’objets blob samples-workitems Cette valeur correspond au nom du conteneur que vous avez créé à l’étape précédente.
    Entrer le répertoire de destination de ce chargement default Acceptez simplement la valeur par défaut /, qui correspond à la racine du conteneur.

Cette commande charge un fichier à partir de votre ordinateur vers le conteneur de stockage dans Azure. À ce stade, votre instance ngrok en cours d’exécution doit signaler qu’une requête a été transférée. Vous verrez également, dans la sortie func.exe de votre session de débogage, que votre fonction a démarré. Normalement, à ce stade, votre session de débogage vous attend là où vous avez défini le point d’arrêt.

Publication du projet sur Azure

Vous avez validé votre code de fonction localement. À présent, il est temps de publier le projet dans une nouvelle application de fonction dans Azure.

Créer l’application de fonction

Les étapes suivantes vous permettent de créer les ressources dont vous avez besoin dans Azure et de déployer vos fichiers projet.

  1. Dans la palette de commandes, entrez Azure Functions : Créer une application de fonction dans Azure... (Avancé).

  2. Suivez les invites et fournissez ces informations :

    Prompt Sélection
    Entrez un nom globalement unique pour la nouvelle application de fonction. Tapez un nom global unique identifiant votre nouvelle application de fonction et sélectionnez Entrée. Les caractères valides pour un nom d’application de fonction sont a-z, 0-9 et -. Notez ce nom. Vous en aurez besoin plus tard pour la génération de la nouvelle URL de point de terminaison.
    Sélectionnez une pile de runtime. Choisissez la version du langage que vous avez exécutée localement.
    Sélectionnez un système d’exploitation. Choisissez Linux ou Windows. Les applications Python doivent s’exécuter sur Linux.
    Sélectionnez un groupe de ressources pour les nouvelles ressources. Choisissez le nom du groupe de ressources que vous avez créé avec votre compte de stockage, noté précédemment dans le portail.
    Sélectionnez un emplacement pour les nouvelles ressources. Sélectionnez un emplacement dans une région proche de chez vous, ou proche d’autres services auxquels vos fonctions ont accès.
    Sélectionnez un plan d’hébergement. Choisissez Consommation pour l’hébergement du plan consommation serverless, où vous n’êtes facturé que lorsque vos fonctions s’exécutent.
    Sélectionnez un compte de stockage. Choisissez le nom du compte de stockage existant que vous utilisez.
    Sélectionnez une ressource Application Insights pour votre application. Choisissez Créer une ressource Application Informations et, à l’invite, tapez un nom pour l’instance utilisée pour stocker les données d’exécution à partir de vos fonctions.

    Une notification s’affiche après que votre application de fonction a été créée et que le package de déploiement a été appliqué. Sélectionnez Afficher la sortie de dans cette notification pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées.

Déployer le code de fonction

Important

Le déploiement vers une application de fonction existante remplace toujours le contenu de cette application dans Azure.

  1. Dans la zone Ressources de l’activité Azure, recherchez la ressource d’application de fonction que vous venez de créer, cliquez avec le bouton droit sur la ressource, puis sélectionnez Déployer sur l’application de fonction....

  2. Quand vous êtes invité à remplacer les déploiements précédents, sélectionnez Déployer pour déployer le code de votre fonction sur la nouvelle ressource de l’application de fonction.

  3. Une fois le déploiement terminé, sélectionnez Afficher la sortie pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées. Si vous manquez la notification, sélectionnez l’icône de cloche dans le coin inférieur droit pour la voir de nouveau.

    Screenshot of the View Output window.

Publier les paramètres de l’application

Étant donné que les paramètres locaux de local.settings.json ne sont pas publiés automatiquement, vous devez les charger maintenant pour que votre fonction s’exécute correctement dans Azure.

Dans la palette de commandes, entrez Azure Functions : Charger les paramètres locaux..., puis, dans l’invite Sélectionner une ressource, choisissez le nom de votre application de fonction.

Recréer l’abonnement aux événements

L’application de fonction s’exécute à présent dans Azure. Vous devez maintenant créer un abonnement aux événements. Ce nouvel abonnement aux événements utilise le point de terminaison de votre fonction dans Azure. Vous allez également ajouter un filtre à l’abonnement aux événements pour que la fonction soit déclenchée uniquement quand des fichiers JPEG (.jpg) sont ajoutés au conteneur. Dans Azure, l’URL du point de terminaison contient également une clé d’accès, qui permet d’empêcher les acteurs autres qu’Event Grid d’accéder au point de terminaison.

Obtenir la clé d’extension d’objet blob

  1. Dans Visual Studio Code, choisissez l’icône Azure dans la barre d’activité. Dans Ressources, développez votre abonnement, développez Application de fonction, cliquez avec le bouton droit sur l’application de fonction que vous avez créée, puis sélectionnez Ouvrir dans le portail.

  2. Sous Fonctions dans le menu de gauche, sélectionnez Clés d’application.

  3. Sous Clés système, sélectionnez la clé nommée blobs_extension, puis copiez la Valeur de la clé.

Vous inclurez cette valeur dans la chaîne de requête d’une nouvelle URL de point de terminaison.

Générer l’URL du point de terminaison

Créez une URL de point de terminaison pour le déclencheur Stockage Blob en suivant l’exemple ci-après :

https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>
https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>

Dans cet exemple, remplacez <FUNCTION_APP_NAME> par le nom de votre application de fonction et remplacez <BLOB_EXTENSION_KEY> par la valeur que vous avez obtenue à partir du portail. Si vous avez utilisé un autre nom pour votre fonction, vous devez également modifier la chaîne de requête functionName en conséquence.

Créer un abonnement aux événements filtré

Étant donné que l’URL du point de terminaison d’un abonnement aux événements ne peut pas être modifiée, vous devez créer un autre abonnement aux événements. À ce stade, vous devez également supprimer l’ancien abonnement aux événements, car il ne peut pas être réutilisé.

Cette fois, vous allez inclure le filtre sur l’abonnement aux événements pour que seuls les fichiers JPEG (*.jpg) déclenchent la fonction.

  1. Dans Visual Studio Code, choisissez l’icône Azure dans la barre d’activité. Dans Ressources, développez votre abonnement, développez Comptes de stockage, cliquez avec le bouton droit sur le compte de stockage que vous avez créé précédemment, puis sélectionnez Ouvrir dans le portail.

  2. Dans le portail Azure, sélectionnez l’option Événements dans le menu de gauche.

  3. Dans la fenêtre Événements, sélectionnez votre ancien abonnement aux événements ngrok, puis sélectionnez Supprimer>Enregistrer. Cette action supprime l’ancien abonnement aux événements.

  4. Sélectionnez le bouton + Abonnement aux événements et spécifiez les valeurs du tableau suivant sous l’onglet De base :

    Paramètre Valeur suggérée Description
    Nom myBlobAzureEventSub Nom qui identifie l’abonnement aux événements. Vous pouvez utiliser le nom pour trouver rapidement l’abonnement aux événements.
    Schéma d’événement Schéma Event Grid Utilisez le schéma par défaut pour les événements.
    Filtrer les types d’événements Objet blob créé
    Type de point de terminaison Webhook Le déclencheur de stockage d’objets blob utilise un point de terminaison de webhook. Pour un déclencheur Event Grid, vous utiliseriez Azure Functions.
    Point de terminaison Votre nouveau point de terminaison d’URL basé sur Azure Utilisez le point de terminaison d’URL que vous avez créé, qui inclut la valeur de clé.
  5. Sélectionnez Confirmer la sélection pour valider l’URL du point de terminaison.

  6. Sélectionnez l’onglet Filtres. Sous Filtres d’objet, cochez la case Activer le filtrage d’objet, puis entrez .jpg dans Le sujet se termine par. Ceci filtre les événements sur les fichiers JPEG uniquement.

    Add filter

  7. Sélectionnez Créer pour créer l’abonnement aux événements.

Vérifier la fonction dans Azure

L’ensemble de la topologie s’exécute désormais dans Azure. Il est temps de vérifier que tout fonctionne correctement. Étant donné que vous êtes déjà dans le portail, il est plus simple de charger un fichier à partir de celui-ci.

  1. Dans la page de votre compte de stockage dans le portail, sélectionnez Conteneurs et sélectionnez votre conteneur samples-workitems.

  2. Sélectionnez le bouton Charger pour ouvrir la page de chargement à droite, recherchez un fichier .jpg à charger dans votre système de fichiers local, puis sélectionnez le bouton Charger pour charger l’objet blob. Vous pouvez maintenant vérifier que votre fonction s’est exécutée en fonction de l’événement de chargement du conteneur.

  3. Dans votre compte de stockage, revenez à la page Événements et sélectionnez Abonnements aux événements. Vous devriez voir qu’un événement a été remis.

  4. Revenez dans la page de votre application de fonction dans le portail. Sous Fonctions, sélectionnez Fonctions, puis choisissez votre fonction. Vous devriez voir un Nombre total d’exécutions égal à 1 au moins.

  5. Sous Développeur, sélectionnez Surveiller. Vous devriez voir des traces écrites de vos exécutions de fonction réussies. Le traitement des événements par Application Insights peut entraîner un délai de cinq minutes.

Nettoyer les ressources

Quand vous passerez à l’étape suivante et ajouterez une liaison de file d’attente Stockage Azure à votre fonction, vous devrez conserver toutes vos ressources en place, car vous allez tirer parti de ce que vous avez déjà fait.

Sinon, vous pouvez utiliser les étapes suivantes pour supprimer l’application de fonction et ses ressources connexes afin d’éviter des coûts supplémentaires.

  1. Dans Visual Studio Code, appuyez sur F1 pour ouvrir la palette de commandes. Dans la palette de commandes, recherchez et sélectionnez Azure: Open in portal.

  2. Choisissez votre application de fonction et appuyez sur Entrée. La page de l’application de fonction s’ouvre dans le portail Azure.

  3. Sous l’onglet Vue d’ensemble, sélectionnez le lien nommé à côté de Groupe de ressources.

    Screenshot of select the resource group to delete from the function app page.

  4. Dans la page Groupe de ressources, passez en revue la liste des ressources incluses et vérifiez qu’elles correspondent à celles que vous souhaitez supprimer.

  5. Sélectionnez Supprimer le groupe de ressources et suivez les instructions.

    Cette opération peut prendre quelques minutes. Une fois terminée, une notification s’affiche pendant quelques secondes. Vous pouvez également sélectionner l’icône représentant une cloche en haut de la page pour afficher la notification.

Pour en savoir plus sur les coûts de Functions, consultez Estimation des coûts d’un plan Consommation.

Étapes suivantes