Automatiser son travail avec Azure Logic App

Vous avez probablement déjà entendu parler de cette histoire sur Reddit d’une personne qui avait automatisé son travail (voir la version française) ! Il faut dire qu’automatiser son travail est très tentant quand on fait des tâches répétitives à faible valeur ajoutée. Et si, contrairement à cette personne, vous ne pouvez pas automatiser entièrement votre travail (enfin, j’espère pour vous), il est très probable que vous puissiez vous faciliter la vie en quelques minutes grâce à Azure Logic App.

Pourquoi automatiser nos tâches ?

  • Si on peut l’automatiser, c’est très certainement que ça n’est pas une tâche avec peu de valeur ajoutée / pas très passionnante
  • Ça vous permettra de passer plus de temps sur les choses auxquelles vous pouvez apporter une vraie plus-value
  • Vous serrez moins sous pression. Vous aurez le temps de prendre du recul. Et prendre du recul vous permettra d’être plus serein(ne), plus efficace, et peut-être même de penser à de nouveaux process à automatiser !
  • Et si vous pouvez l’automatiser, pourquoi ne pas le faire?

Qu’est-ce qu’Azure Logic App ?

Azure Logic App est un service Azure en SAAS qui va vous permettre de construire une petite application en quelques clics et sans connaissance en développement ! C’est donc une technologie No Code, et Serverless (voir🔎 Qu’est-ce que le serverless ?).

Azure Logic App va s’articuler autour d’un logigramme (au besoin, voici une explication) que vous allez construire en plaçant des actions, qui chacune appellera un connecteur chargé d’effectuer un travail particulier. Ce travail peut être de lire des informations dans un fichier Excel, enregistrer dans une base de données, écrire un email, etc.

Exemple d'un Azure Logic App très simple. Ce dernier rallume une VM, préalablement éteinte, chaque jour de la semaine à 8h
Exemple d’un Azure Logic App très simple. Ce dernier rallume une VM, préalablement éteinte, chaque jour de la semaine à 8h.

Comment fonctionne Azure Logic App ?

Azure Logic App utilise le même système que nous avions vu avec Power Automate, avec seulement quelques nuances sur la gestion des droits et sur les licences d’utilisation.

Les triggers

Comme pour Power Automate, votre programme va commencer par un « trigger », un déclencheur donc. Celui-ci peut être a peut prêt ce que vous souhaitez :

  • Un webhook qui lance un appel HTTP
  • Un humain qui utilise une URL dans un navigateur
  • Un moment (heure et/ou jours précis par exemple)
  • La modification d’un fichier sur un dépot
  • La réception d’un événement (email, log, …)
  • Et encore d’autres..
Exemples de déclencheurs disponibles

Vous l’aurez compris, ce sont ces déclencheurs qui vont donc exécuter la suite de votre programme !
Mais bien comprendre quels sont les déclencheurs disponibles, c’est le premier pas pour réfléchir aux possibilités d’optimisations qui s’offrent à vous.

Les actions et connecteurs d’Azure Logic App

Les actions vont être le « corps » de votre programme. Ce sont les actions que vous allez mettre en place suite à votre déclencheur pour arriver jusqu’à votre résultat.

Les actions utilisent des connecteurs qui vont être chargés de faire une action très précise. Par exemple, envoyer un email est une action qui utilise un connecteur Office365 si vous passez par une boite Outlook. Envoyer une requête HTTP à une API est une action qui utilisera alors un autre connecteur.

Une partie des actions possibles du connecteur Office 365 Outlook. Vous pouvez entre autres envoyer un email, créer un contact, faire une demande d’approbation.

Vous allez pouvoir enchaîner différentes actions, dans l’ordre que vous souhaitez, les unes après les autres. Mais si vous souhaitez aussi optimiser le temps de traitement, il peut être possible de paralléliser les actions ⤵.

La parallélisation

Lorsque vous avez besoin d’effectuer plusieurs traitements sur une même action, il est possible de paralléliser les actions afin qu’elles s’exécutent en parallèle, et ainsi gagner du temps sur le temps de traitement global du processus.

Il est possible de paralléliser les actions par la création de branches

Vous pouvez créer plusieurs branches parallèles, mais aussi permettre qu’elles fusionnent à nouveau par la suite. Dans l’exemple ci-dessous, lors de l’appel au point d’entrée REST que nous avons créé, nous enregistrons le contenu du message dans une base Cosmo DB. En parallèle, nous envoyons le contenu du message par email. Une fois que les deux actions sont terminées avec succès, nous renvoyons un code HTTP 200 pour dire que l’ensemble des actions se sont bien passées.

Un Exemple de process parallélisé

Les « dynamics contents »

Les éléments « dynamics content » sont des informations accessibles dans votre Azure Logic App qui sont apportées par les connecteurs que vous utilisez. Si on reprend notre exemple précédent, notre application démarre par la réception d’un message JSON via du HTTP. Ce message contient des informations, qu’on va pouvoir récupérer via le dynamic content, car nous avons informé Azure Logic App de la structure des données.

Le connecteur prend en paramètre le format JSON attendu, et peut ainsi mapper les données
Lorsque vous utilisez un connecteur, et que vous cliquez sur un champ de paramètre, il est possible de le remplir avec un « dynamics content ». Le dynamic content propose l’ensemble des variables mises à disposition par les connecteurs précédents. Dans cet exemple, on a accès au message et la liste de contact déclarée dans le connecteur HTTP Request.

Gardez en tête que les dynamics contents sont très utiles et pratiques, mais ne se remplissent que par les connecteurs utilisés au préalable ! Sinon l’information n’est pas encore disponible, forcement.

Les boucles

Elles sont un élément important des Azure Logic App, notamment car c’est un pilier important des applications en général !

Les boucles vous permettent entre autre de :

  • De traiter des listes d’informations, comme par exemple envoyer 1 email (différent ou non) à chaque contact
  • De préparer des informations pour plus tard, comme par exemple concaténer (fusionner) l’ensemble des emails de nos contacts pour envoyer 1 email avec l’ensemble des destinataires d’un coup

Les deux exemples ci-dessus sont présents dans l’Azure Logic App ci-dessous :

Au centre, un process qui vise à récupérer l’ensemble des contacts sur Outlook, et à envoyer 1 email pour chaque contact. A droite, on concatène l’ensemble des adresses email récupéré préalablement, pour envoyer 1 seul email avec la liste préparée.

Les conditions

Les conditions vont, comme leurs noms l’indiquent, permettre de déterminer des « chemins d’actions » différents en fonction des cas que vous souhaitez. Vous allez ainsi déclarer la condition à remplir, et si elle est remplie, un chemin sera choisi, et l’autre dans le cas contraire.

Dans cet exemple, on ne concatène nos adresses email à la variable que si elles semblent être une adresse valide de l’entreprise, à savoir « [email protected] »

Il vous est bien sur possible de combiner les connecteurs entre eux, pour créer des conditions plus complexes.

Un exemple de bloc conditionnel plus complexe

Petites astuces complémentaires dans Azure Logic App

  • Il vous est possible de renommer les actions que vous mettez en place. Abusez-en ! Ca vous permet
    • De rendre votre app plus lisible
    • De mieux vous y retrouver dans vos variables dynamics content
La section « get bugs total » permet de s’y retrouver parmis tout les appels API
  • Le dynamics content possède aussi une section « expression », qui vous présente les différentes fonctions que vous pouvez utiliser pour manipuler les variables. N’hésitez pas à vous renseigner dessus, cela peut vous débloquer dans certaines situations
La section « expression » peut être très utile, et éviter de créer des algorithmes trop complexes
  • Votre application est, basiquement, un JSON avec une structure qui lui est propre. Vous pouvez utiliser la vue « code » pour l’analyser. Il est parfois plus simple d’effectuer des modifications par ce biais, que par l’interface graphique ! D’ailleurs, c’est les noms des variables et tâches qui sont utilisées. D’où l’important de les renommer, et si possible de façon explicite.
Exemple d’une action, et l’utilisation de variables en dynamic content
  • Vu que votre application est basiquement du JSON, vous pouvez évidemment la sauvegarder sur un dépot de code tel que Azure DevOps et la versionner. Vous pouvez tout autant la déployer via la CI/CD (article à venir)
  • Il est possible de manipuler un Azure Logic App via Azure ou directement via Visual Studio ou VS Code

Et la facturation ?

Contrairement à Power Automate qui a besoin de licence, le service Azure Logic App est un service Azure comme les autres et qui est facturé à la consommation. Vous avez différents types de plans, mais sur une facturation classique, cette dernière se fera par action et par composant. Un tiers gratuit est présent, et seules les actions au-delà du nombre d’actions mensuelles gratuites seront facturées.

La facturation d'Azure Logic App
La facturation d’Azure Logic App. Source

Scénarios d’exemple d’Azure Logic App

Voici quelques exemples très pratiques, qui sont utilisés chaque jour, et qui ne prennent que quelques minutes à mettre en place.

Optimiser la consommation Azure de ses services en fonction de l’heure / du jour

Un exemple très simple et très pratique d’application peut être une application pour optimiser la puissance de certains services Azure dépourvue de service Azure Autoscale. On pensera par exemple à Azure SQL, aux VM, ou à du scaling vertical sur Azure App Service.

Vous pouvez ainsi produire rapidement un service qui va démarrer à heure et/ou jours fixes pour baisser le niveau de puissance et la facturation en heure creuse (par exemple, la nuit et le week-end). Et une seconde application sera chargée de le remonter en pleine journée en semaine.

Nous avons vu au début de cet article un exemple qui éteint une VM à heure fixe avec un connecteur dédié, mais vous pouvez très bien aussi exécuter un script powershell permettant d’ajuster un service Azure via une ligne de commande.

Automatiser les rapports Azure Devops journaliers / hebdomadaires

Un autre exemple peut être la production de rapport régulier qui serait envoyé automatiquement.

Grâce aux API disponibles sur beaucoup d’application, on peut récupérer des données utiles. Dans cet exemple, j’utilise les requêtes Azure DevOps décrites dans cet article et qui peuvent être consommées via le connecteur Azure Logic App approprié.

Une fois ces données récupérées, il est possible de les formater en lignes de tableau HTML qui seront alors affichées dans un email, ce dernier étant envoyé chaque fin de semaine par exemple.

Exemple d’un process de rapport Azure DevOps. On va chercher plusieurs valeurs via les API, en parallèle. Une fois toutes les données récupérées, on construit les tableaux HTML grâce aux boucles. Ensuite, on concatène l’ensemble du HTML avant de l’envoyer par email.

Il est alors très simple de produire un rapport détaillé des actions qui ont été effectuées sur un projet pour l’envoyer aux membres de l’équipe.

La validation de document

Enfin, un dernier exemple très utile peut être la validation de document officiel et/ou important.

Il existe une fonctionnalité sharepoint dédiée, qui consiste à créer un processus de validation avec certaines personnes.

Le process en question fait partie des templates populaires d’Azure Logic App

Via Azure Logic App, on peut par exemple mettre un déclencheur sur un dossier Sharepoint spécial. Quand un document serait placé dans le dossier susnommé, une validation serait enclenchée avec envoi d’email auprès de certaines personnes. Si les conditions sont remplies (au moins une personne valide / tous valide), alors le document serait déplacé dans le dossier correspondant. Dans le cas inverse, il pourrait être supprimé, déplacé dans un autre dossier, et/ou envoyer un email à la personne dont provient la demande pour la prévenir du refus.

Le process est simple, en utilisant seulement les connecteurs Sharepoint (vérifier un dossier, déplacer un fichier), le connecteur pour la validation, et le conditionnel.

Pour aller plus loin

  • Les actions peuvent appeler des Azure Function (voir ⚡ Que sont les Azure Functions ?). Cela peut permettre de rapidement couvrir un besoin si aucune action n’existe pour cela
  • Vous pouvez créer vos propres actions et les proposer sur le marketplace

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *