Exécuter votre code à la demande avec Azure Functions

Effectué

Maintenant que nous avons créé une application de fonction, voyons comment générer, configurer et exécuter une fonction. Nous allons exécuter notre fonction dans le prochain exercice, donc vous n’avez pas besoin d’accomplir de tâches dans cette unité.

Déclencheurs

Les fonctions sont pilotées par les événements, ce qui signifie qu’elles s’exécutent en réponse à un événement. Le type d’événement qui démarre une fonction s’appelle un déclencheur. Chaque fonction doit être configurée avec un seul déclencheur.

Vous pouvez déclencher l’exécution de la fonction à l’aide de requêtes HTTP, un minuteur planifié et des événements des services Azure suivants :

Service Azure Description du déclencheur
Stockage Blob Démarre une fonction quand un objet blob nouveau ou mis à jour est détecté.
Azure Cosmos DB Démarre une fonction quand des insertions et des mises à jour sont détectées.
Event Grid Démarre une fonction à réception d’un événement en provenance d’Event Grid.
Event Hubs Démarre une fonction à réception d’un événement en provenance d’Event Hubs.
Stockage File d’attente Démarre une fonction quand un nouvel élément est reçu dans une file d’attente. Le message de file d’attente est fourni comme entrée à la fonction.
Service Bus Démarre une fonction en réponse aux messages en provenance d’une file d’attente Service Bus.

Liaisons

Une liaison est une façon déclarative de connecter des données et des services à une fonction. Les liaisons interagissent avec diverses sources de données, ce qui signifie que vous n’êtes pas obligé d’écrire du code dans votre fonction pour vous connecter aux sources de données et gérer les connexions. La plateforme gère cette complexité à votre place avec le code de liaison. Chaque liaison suit une direction : Votre code lit des données dans des liaisons d’entrée, et en écrit dans des liaisons de sortie. Chaque fonction peut n’avoir aucune liaison ou en posséder plusieurs pour gérer les données d’entrée et de sortie traitées par la fonction.

Un déclencheur est un type de liaison d’entrée qui a la possibilité de lancer une exécution de code.

Azure propose un grand nombre de liaisons permettant de se connecter à différents services de stockage et de messagerie.

Définir un exemple de liaison

Examinons un exemple de configuration de fonction avec une liaison d’entrée (déclencheur) et une liaison de sortie. Supposons que nous voulons écrire une nouvelle ligne dans Stockage Table Azure chaque fois qu’un nouveau message s’affiche dans Stockage File d’attente Azure. Ce scénario peut être implémenté avec un déclencheur Stockage File d’attente Azure et une liaison de sortie Stockage Table Azure.

L’extrait suivant est le fichier function.json pour ce scénario.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Notre configuration JSON spécifie que notre fonction est déclenchée quand un message est ajouté à une file d’attente nommée myqueue-items. La valeur de retour de notre fonction est ensuite écrite dans outTable dans le Stockage Table Azure.

Pour les fonctions PowerShell, les liaisons de sortie sont écrites explicitement avec l’applet de commande Push-OutputBinding.

Cet exemple est une illustration simple de la façon dont nous configurons des liaisons pour une fonction. Nous pourrions faire de la sortie un e-mail en utilisant une liaison SendGrid ou placer un événement dans un Service Bus pour notifier un autre composant de notre architecture. Nous pourrions même avoir plusieurs liaisons de sortie pour envoyer des données à différents services.

Conseil

Pour visualiser et modifier le contenu de function.json dans le portail Azure, accédez à la page d’accueil, sélectionnez votre application de fonction, puis dans le volet droit, sélectionnez Vue JSON. La vue JSON des ressources affiche l’ID de ressource et le code JSON modifiable. Pour fermer la vue JSON, sélectionnez le X en haut à droite du volet.

Tous les langages pris en charge par Functions n’utilisent pas le fichier function.json pour définir des fonctions.

Créer une fonction dans le portail Azure

Azure Functions dispose de modèles de fonction prédéfinis, qui sont basés sur un type spécifique de déclencheur. Ces modèles, dans le langage que vous avez choisi, facilitent la création de votre première fonction.

Ce module n’est pas pris en charge pour tous les langages pris en charge par Functions, et le portail lui-même ne prend pas en charge la création de fonctions dans tous les langages pris en charge par Functions.

Pour les langages pris en charge qui utilisent le fichier function.json pour définir des fonctions, vous pouvez créer et modifier ces fonctions directement dans le Portail Azure. Ces langages pris en charge par le portail incluent : JavaScript, PowerShell, Python et les scripts C# (.csx). Les langages qui définissent des fonctions directement dans le code lui-même doivent être développés en dehors du portail et déployés sur Azure. Ces langages hors portail pris en charge incluent : C#, Java, Python (modèle de programmation v2) et JavaScript/TypeScript (modèle de programmation Node.js v4).

Modèles de fonctions

Quand vous créez votre première fonction dans le portail, vous pouvez sélectionner un déclencheur prédéfini pour votre fonction. Selon vos sélections, Azure génère du code et des informations de configuration par défaut, par exemple, il crée une entrée de journal d’événements quand des données d’entrée sont reçues.

La sélection d’un modèle dans le volet Ajouter une fonction permet d’accéder facilement aux environnements de développement, déclencheurs et dépendances les plus courants. Quand vous créez une fonction dans le portail Azure, vous avez le choix entre plus de 20 modèles. Une fois la fonction créée, vous pouvez personnaliser le code.

Quand vous créez une fonction à partir d’un modèle, plusieurs fichiers sont créés, y compris un fichier de configuration, function.json et un fichier de code source, index.js.

Vous pouvez créer ou modifier des fonctions pour votre application de fonction en sélectionnant Fonctions sous la catégorie Fonctions dans le menu Application de fonction.

Quand vous sélectionnez une fonction que vous avez créée dans votre application de fonction, le volet Fonction s’ouvre. Sélectionnez Code + test dans le menu Fonction afin d’avoir accès aux actions dans la barre de commandes pour tester et exécuter le code, enregistrer ou abandonner les changements effectués ou obtenir l’URL publiée. Sélectionnez Tester/exécuter à partir de la barre de commandes afin d’exécuter des cas d’usage pour les demandes qui comprennent des chaînes de requête et des valeurs. Le chemin de la fonction au-dessus de la zone de code affiche le nom du fichier ouvert. Vous pouvez sélectionner un fichier spécifique dans la liste déroulante pour le tester ou le modifier, par exemple function.json.

Screenshot of the function code and test editor showing the expanded Test/Run view, with menu options highlighted.

Dans l’image précédente, le volet de droite a les onglets Entrée et Sortie. Sélectionnez l’onglet Entrée pour générer et tester la fonction en ajoutant des paramètres de requête et en fournissant des valeurs pour votre chaîne de requête. L’onglet Sortie affiche les résultats de la demande.

Tester votre fonction Azure

Une fois que vous avez créé une fonction dans le portail, vous voulez la tester. Il existe deux approches :

  • Test dans le portail
  • Exécution manuelle

Tester dans le portail Azure

Le portail offre aussi un moyen pratique de tester vos fonctions. Comme décrit précédemment, dans la capture d’écran précédente. Quand vous sélectionnez Exécuter dans ce volet, les résultats s’affichent automatiquement sous l’onglet Sortie et le volet Journaux s’ouvre pour afficher l’état.

Exécuter la fonction manuellement

Vous pouvez démarrer une fonction en déclenchant manuellement le déclencheur configuré. Par exemple, si vous utilisez un déclencheur HTTP, vous pouvez vous servir d’un outil comme Postman ou cURL pour lancer une requête HTTP vers votre URL de point de terminaison de fonction, disponible à partir de la définition de fonction (Obtenir l’URL de la fonction).

Supervision et tableau de bord Application Insights

Il est essentiel de pouvoir superviser vos fonctions pendant les phases de développement et de production. Le portail Azure fournit un tableau de bord de monitoring que vous activez avec l’intégration d’Application Insights. Dans le menu Application de fonction, sous Paramètres, sélectionnez Application Insights, Activer Application Insights, puis Appliquer. Dans la boîte de dialogue, sélectionnez Oui. Ce tableau de bord Application Insights est un moyen rapide de voir l’historique des opérations de fonction en affichant l’horodatage, le code de résultat, la durée et l’ID d’opération renseignés par Application Insights.

Screenshot showing the HTTP function Application Insights dashboard with function results, corresponding HTTP status codes, and the Monitoring menu items highlighted.

Volet Journaux de streaming

Dès que vous avez activé Application Insights dans le portail Azure, vous pouvez ajouter des instructions de journalisation à votre fonction pour le débogage. Les méthodes appelées pour chaque langage reçoivent un objet de « journalisation » qui peut servir à journaliser des informations dans le volet Journaux du volet Code + test pendant l’exécution d’un test.

Écrivez dans les journaux à partir de votre code à l’aide de la méthode log sur l’objet context, qui est passée au gestionnaire. L’exemple suivant écrit dans le niveau de journalisation par défaut (informations) :

context.log('Enter your logging statement here');

Écrivez dans les journaux à partir de votre code à l’aide de la cmdlet Write-Host, comme illustré dans l’exemple suivant :

Write-Host "Enter your logging statement here"

Erreurs, échecs, avertissements et anomalies

Vous pouvez utiliser des métriques ou des options de la catégorie Investiguer du menu Fonction pour superviser les performances, diagnostiquer les échecs ou configurer des dizaines de workbooks prédéfinis afin de gérer votre application de fonction. Tout, depuis les erreurs de compilation et les avertissements dans le code jusqu’aux statistiques d’utilisation par rôle.