Série : Azure “Functions” – Publication

Après le développement et le test en local de notre azure fonction nous allons la mettre en place dans notre infrastructure Azure.

Une “Azure Functions” est la possibilité donnée à l’utilisateur d’exécuter d’un ensemble d’instructions / code sans se préoccuper de l’infrastructure sous-jacente et donc serveur. Pas besoin, de savoir si tout cela est à jour. Microsoft le fait pour nous. Microsoft et sa plateforme Cloud nous apporte les garanties d’élasticité et de haute disponibilité.

Présentation

Comme je l’avais évoqué dans le billet concernant la démonstration de la création et du développement du code d’une fonction azure voici le moment de la publier dans notre souscription Azure.

Mais avant cela, il va nous falloir crééer toutes les resources qui vont servir au bon fonctionnement de fonction de calcul de PGCD.

Dans ce billet, j’ai décidé d’effectuer l’ensemble des actions en ligne de commande avec le CLI d’Azure. Dans un autre billet, je présenterai la solution avec Azure Resources Manager (ARM) pour un déploiement automatisé.

Pré-requis

Avant de commencer voici se dont nous avons besoin :

  • Le code source de notre fonction azure sur le calcul d’un PGCD ;
  • La CLI d’Azure installée ;
  • La commande Func qui permet la création, l’exécution en local et bien d’autres actions sur les fonctions Azure ;
  • Un Terminal ou Visal Code pour l’exécution des commandes CLI ;
  • Une souscription Azure pour pouvoir effectuer la publication et les tests ;
  • J’utilise la commande CURL pour tester les appels à la fonction.

Voilà, quand nous avons tout nos "ingrédients" nous allons pouvoir commencer la "recette". C’est parti !!

Les sources

J’ai volontairement utilisé Visual Code pour pouvoir récupérer les sources. A des fins de tester et valider que ma fonction compile bien, fonctionne correctement et ensuite pouvoir la publier sur Azure.

Pour cela, il suffit de revoir le billet de démonstration sur les azures fonctions. En résumé :

  • Démarrer Visual Code ;
  • Ouvrir votre répertoire qui contient les sources ;
  • Ouvrir un Terminal ;
  • Exécuter la commande func ;
  • Effectuer une commande curl ou par le navigateur.

func start

Si tout se passe correctement la commande vous donne l’url à appeler pour tester votre fonction, comme ceci :

curl "http://localhost:666/api/pgcd?X=120&Y=8"

en réponse on doit avoir le message suivant :

Azure Function for calculated PGCD(120,8) is 8

Voilà, nous savons que notre fonction est prête à être mise en ligne. Mais avant, il nous faut préparer nos ressources sur Azure.

Environnement Azure

Pour que l’on puisse déployer et exécuter notre fonction Azure, nous avons besoin de plusieurs resources. Dans un soucis de simplicité de compréhension je me suis arrêté à fournir les prérequis dans les commandes et je ne suis pas rentré dans plus de détails. Le but étant la publication d’une fonction et sa mise à disposition.

Voici la liste des ressources :

Groupe de ressource

Toutes ressources doit appartenir obligataoirement a un groupe de ressources. C’est un container fonctionnelle avec un ensemble de méta-données. De plus, celles-ci ne peuvent appartenir qu’à un seul groupe de ressources à la fois.

Nous allons donc passer la commande suivante :

az group create --name functionapp-rg --location francecentral

pour controler l’état de notre ressource groupe on peut passer la commande suivante :

az group list --output table

qui nous retournera (pour ma part je n’avais aucun groupe de ressources avant) :

Name            Location       Status   
--------------  -------------  ---------
functionapp-rg  francecentral  Succeeded

ou encore

az group show --name functionapp-rg -otable

Compte de stockage

Maintenant, il faut un compte de stockage. Pour faire simple un compte de stockage va nous permettre de stocker tout types d’informations dans Azure dans un nom de domaine unique et accessible via HTTP/S. Les données sont durables, sécurisées et hautement disponibles.

Pour cela nous allons passer la commande suivante pour faire sa création et l’affecter à notre ressource groupe créé précédenment.

az storage account create --name funcaccount --resource-group functionapp-rg 

Après un délai plus ou moins long, un objet au format JSON apparaitra.

On peut obtenir les informations sur le ou les compte(s) de stockage avec la commande suivante :

az storage account list -o table

Pour avoir les informations sur uniquement notre compte la commande suivante :

az storage account show --name funcaccount  

Application de fonction

Son but est de fournir aux fonctions qui s’y trouvent un contexte d’exécution et un comportement défini justement par la Function App. Il est important de retenir que toutes les fonctions dans une Function App doivent avoir le même langage de développement.

La scability est au niveau de la Function App se qui veut dire que la mise à l’échelle se fait sur l’ensemble des fonctions dans l’application. Elles partagent donc l’ensemble des ressources par instance de fonctions.

Le Deployment se fait sur l’ensemble des fonctions de l’applications.

Nous allons donc maintenant effectuer la création de notre Function App avec la commande suivante :

az functionapp create --name pgcdfuncapp --resource-group functionapp-rg --storage-account funcaccount --consumption-plan-location francecentral --functions-version 3

Description des paramètres

name

C’est le nom de notre nouvelle FunctionApp.

resource-group

C’est le nom du groupe de ressources où on veut mettre notre application de fonction.

storage-account

C’est le compte de stockage que nous avons créé juste avant.

consumption-plan-location

C’est la localisation géographique où notre application de fonction sera hébergée. Si vous souhaitez avoir la liste des localisations disponibles il suffit de passer la commande suivante :

az functionapp list-consumption-locations -o table
functions-version

C’est la version du runtime pour les Azures Fonctions, à l’heure actuelle il existe la version 1.x 2.x 3.x. Par défault, la version est 2.x, ici nous utiliserons donc la version 3.x.

Publication de notre Fonction

Maintenant que nous avons créés notre infrastructure dans Azure pour acceuillir notre fonction. Nous allons déployer celle-ci. Pour se faire, à l’aide de notre session terminal nous allons nous rendre dans le répertoire qui contient le fichier projet de notre fonction. Ensuite nous allons utiliser la commande suivante :

func azure functionapp publish pgcdfuncapp

Test de notre fonction en ligne

Si le déploiement a bien été effectué. le rapport de la commande vous donnera un semblant de message suivant :

Deployment completed successfully.
Syncing triggers...
Functions in pgcdfuncapp:
    pgcddemo - [httpTrigger]
        Invoke url: https://pgcdfuncapp.azurewebsites.net/api/pgcd?code=goc4uOYiqbXR4mVi6XhFL3/Y8sPr0G1K9Sh0h62uZK3avVsVgZePEg==

Pour tester je vais utiliser la commande curl suivante :

curl "https://pgcdfuncapp.azurewebsites.net/api/pgcd?code=goc4uOYiqbXR4mVi6XhFL3/Y8sPr0G1K9Sh0h62uZK3avVsVgZePEg==&X=123&y=78"

Le résultat sera :

Azure Function for calculated PGCD(123,78) is 3

Description des paramètres

X et Y

Sont les paramètres propres à la fonction de calcul du PGCD.

code

C'est le jeton de sécurité qui permet à l'appelant d'accéder et d'exécuter la fonction. D'autres moyen au niveau sécurité sont disponibles car plus sécuritaire.

Destruction des ressources

Comme ce n’était que pour une démonstration nous allons nettoyer les ressources allouées sur notre souscription pour éviter d’éventuelles dépenses inutiles. Pour cela, il suffit de supprimer notre groupe de ressources et Azure va se charger de détruire en tenant compte des éventuelles dépendances l’ensemble des ressources contenues. En sachant que si une ressource a un verrou elle ne sera pas détruite. Pour cela, il suffit juste d’effectuer la commande suivante :

az group delete --name functionapp-rg

Résumé

Voilà, maintenant vous êtes capable de :

  • développer une function azure ;
  • mettre en place l’infrastructure Azure minimale pour acceuillir votre fonction ;
  • faire appel à partir d’une application ou d’une commande à celle-ci ;
  • détruire l’ensemble des ressources.
Stay tuned logo

Frédéric Schmidt

Lead Technical Architect.

Ajouer un commentaire

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Recent Comments

    %d blogueurs aiment cette page :