Démarrage rapide : Créer une fonction Python dans Azure à partir de la ligne de commande

Dans cet article, vous utilisez des outils en ligne de commande pour créer une fonction Python qui répond à des requêtes HTTP. Après avoir testé le code localement, vous le déployez dans l’environnement serverless d’Azure Functions.

Cet article utilise le modèle de programmation Python v2 pour Azure Functions, qui offre une approche basée sur un élément décoratif pour la création de fonctions. Pour en savoir plus sur le modèle de programmation Python v2, consultez le Guide de référence pour les développeurs

Le fait de suivre ce guide de démarrage rapide entraîne une petite dépense de quelques cents USD tout au plus dans votre compte Azure.

Il existe également une version basée sur Visual Studio Code de cet article.

Configurer votre environnement local

Avant de commencer, vous devez disposer de la configuration requise suivante :

Installer Azure Functions Core Tools

La méthode recommandée pour installer Core Tools dépend du système d’exploitation de votre ordinateur de développement local.

Les étapes suivantes utilisent un programme d’installation Windows (MSI) pour installer Core Tools v4.x. Pour plus d’informations sur les autres programmes d’installation basés sur des packages, consultez le fichier Lisezmoi des outils principaux.

Téléchargez et exécutez le programme d’installation de Core Tools, selon votre version de Windows :

Si vous avez précédemment utilisé Windows installer (MSI) pour installer Core Tools sur Windows, vous devez désinstaller l’ancienne version de la fonction Ajout/suppression de programmes avant d’installer la dernière version.

Utilisez la commande func --version pour vous assurer que votre version de Core Tools est au moins 4.0.5530.

Créer et activer un environnement virtuel

Dans le dossier approprié, exécutez les commandes suivantes pour créer et activer un environnement virtuel nommé .venv. Vérifiez que vous utilisez une version de Python prise en charge par Azure Functions.

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

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

sudo apt-get install python3-venv

Vous devez exécuter toutes les commandes suivantes dans cet environnement virtuel activé.

Créer une fonction locale

Dans Azure Functions, un projet de fonction est un conteneur pour une ou plusieurs fonctions individuelles qui répond chacune à un déclencheur spécifique. Toutes les fonctions d’un projet partagent les mêmes configurations locales et d’hébergement.

Dans cette section, vous allez créer un projet de fonction et ajouter une fonction déclenchée par HTTP.

  1. Exécutez la commande func init comme suit pour créer un projet de fonctions Python v2 dans l’environnement virtuel.

    func init --python
    

    L’environnement contient maintenant divers fichiers pour le projet, notamment des fichiers config nommés local.settings.json et host.json. Dans la mesure où local.settings.json peut contenir des secrets téléchargés à partir d’Azure, le fichier est exclu du contrôle de code source par défaut dans le fichier .gitignore.

  2. Ajoutez une fonction à votre projet à l’aide de la commande suivante, où l’argument --name est le nom unique de votre fonction (HttpExample) et où l’argument --template spécifie le déclencheur de la fonction (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    Si vous y êtes invité, choisissez l’option ANONYME. func new ajoute un point de terminaison de déclencheur HTTP nommé HttpExample au fichier function_app.py qui est accessible sans authentification.

Exécuter la fonction localement

  1. Exécutez votre fonction en démarrant l’hôte du runtime d’Azure Functions local à partir du dossier LocalFunctionProj :

    func start
    

    Vers la fin de la sortie, les lignes suivantes doivent s’afficher :

    Screenshot of terminal window output when running function locally.

    Remarque

    Si HttpExample n’apparaît pas comme indiqué ci-dessus, cela signifie probablement que vous avez démarré l’hôte à partir d’un emplacement autre que le dossier racine du projet. Dans ce cas, utilisez Ctrl+C pour arrêter l’hôte, accédez au dossier racine du projet, puis réexécutez la commande précédente.

  2. Copiez l’URL de votre fonction HTTP à partir de cette sortie dans un navigateur et ajoutez la chaîne de requête ?name=<YOUR_NAME> pour obtenir une URL complète semblable à http://localhost:7071/api/HttpExample?name=Functions. Le navigateur doit afficher un message de réponse qui renvoie la valeur de votre chaîne de requête. Le terminal dans lequel vous avez démarré votre projet affiche également une sortie de journal quand vous effectuez des requêtes.

  3. Quand vous avez terminé, appuyez sur Ctrl + C, puis tapez y pour arrêter l’hôte Functions.

Créer des ressources Azure de prise en charge pour votre fonction

Avant de déployer le code de votre fonction dans Azure, vous devez créer trois ressources :

  • Un groupe de ressources, qui est un conteneur logique pour les ressources associées.
  • Un compte de stockage, qui conserve l’état et d’autres informations spécifiques à vos projets.
  • Une application de fonction, qui fournit l’environnement d’exécution de votre code de fonction. Une application de fonction est mappée à votre projet de fonction local. Elle vous permet de regrouper les fonctions en tant qu’unité logique pour faciliter la gestion, le déploiement et le partage des ressources.

Utilisez les commandes suivantes pour créer ces éléments. Azure CLI et PowerShell sont pris en charge.

  1. Si nécessaire, connectez-vous à Azure.

    az login
    

    La commande az login vous connecte à votre compte Azure.

  2. Créez un groupe de ressources nommé AzureFunctionsQuickstart-rg dans la région de votre choix.

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    La commande az group create crée un groupe de ressources. Dans la commande ci-dessus, remplacez <REGION> par une région près de chez vous en utilisant un code de région disponible retourné par la commande <REGION>.

    Notes

    Vous ne pouvez pas héberger des applications Linux et Windows dans le même groupe de ressources. Si vous disposez d’un groupe de ressources existant nommé AzureFunctionsQuickstart-rg avec une application de fonction Windows ou une application web, vous devez utiliser un autre groupe de ressources.

  3. Créez un compte de stockage universel dans votre groupe de ressources et votre région.

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
    

    La commande az storage account create crée le compte de stockage.

    Dans l’exemple précédent, remplacez <STORAGE_NAME> par un nom qui vous convient et qui est unique dans Stockage Azure. Les noms doivent contenir entre 3 et 24 caractères, et comporter uniquement des lettres minuscules. Standard_LRS spécifie un compte universel, qui est pris en charge par Functions.

    Le compte de stockage n’engendre que quelques centimes (USD) de dépense dans ce guide de démarrage rapide.

  4. Créez l’application de fonction dans Azure.

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime python --runtime-version <PYTHON_VERSION> --functions-version 4 --name <APP_NAME> --os-type linux --storage-account <STORAGE_NAME>
    

    La commande az functionapp create crée l’application de fonction dans Azure. Vous devez fournir --os-type linux, car les fonctions Python s’exécutent uniquement sur Linux.

    Dans l’exemple précédant, remplacez <APP_NAME> par un nom globalement unique qui vous convient. <APP_NAME> est également le sous-domaine par défaut de l’application de fonction. Vérifiez que la valeur que vous définissez pour <PYTHON_VERSION> est une version prise en charge par Functions et qu’elle est identique à la version que vous avez utilisée pendant le développement local.

    Cette commande crée une application de fonction qui s’exécute dans votre runtime de langage spécifié dans le Plan Consommation Azure Functions, qui est gratuit pour l’utilisation faite ici. La commande crée aussi une instance d’Azure Application Insights associée dans le même groupe de ressources, avec laquelle vous pouvez superviser votre application de fonction et visualiser les journaux. Pour plus d’informations, consultez Surveiller l’exécution des fonctions Azure. L’instance n’entraîne aucun coût tant que vous ne l’activez pas.

Déployer le projet de fonction sur Azure

Après avoir créé votre application de fonction dans Azure, vous êtes prêt à déployer votre projet Functions local à l’aide de la commande func azure functionapp publish.

Dans l’exemple suivant, remplacez <APP_NAME> par le nom de votre application.

func azure functionapp publish <APP_NAME>

La commande de publication affiche des résultats similaires à la sortie suivante (tronquée par souci de simplicité) :

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Appeler la fonction sur Azure

Dans la mesure où votre fonction utilise un déclencheur HTTP, vous l’appelez en adressant une requête HTTP à son URL dans le navigateur ou à l’aide d’un outil semblable à curl.

Copiez l’URL d’appel complète affichée dans la sortie de la commande publish dans la barre d’adresse d’un navigateur, en ajoutant le paramètre de requête ?name=Functions. Le navigateur doit afficher une sortie similaire à celle générée au moment de l’exécution locale de la fonction.

Nettoyer les ressources

Si vous passez à l’étape suivante, qui consiste à ajouter une liaison de sortie de file d’attente Stockage Azure, gardez toutes vos ressources en place, car vous allez tirer parti de ce que vous avez déjà fait.

Sinon, utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources qu’il contient afin d’éviter les coûts supplémentaires.

az group delete --name AzureFunctionsQuickstart-rg

Étapes suivantes

Vous rencontrez des problèmes avec cet article ?