Démarrage rapide : Créer une fonction Python déclenchée par HTTP dans AzureQuickstart: Create an HTTP triggered Python function in Azure

Cet article explique comment utiliser des outils en ligne de commande pour créer un projet Python s’exécutant dans Azure Functions.This article shows you how to use command-line tools to create a Python project that runs in Azure Functions. Vous créez également une fonction qui est déclenchée par une requête HTTP.You also create a function that is triggered by an HTTP request. Après une exécution locale, vous publiez votre projet de sorte qu’il s’exécute en tant que fonction serverless dans Azure.After running locally, you publish your project to run as a serverless function in Azure.

Cet article est le premier de deux guides de démarrage rapide Python pour Azure Functions.This article is the first of two Python quickstarts for Azure Functions. Après avoir terminé ce guide de démarrage rapide, vous pouvez ajouter une liaison de sortie de file d’attente de Stockage Azure à votre fonction.After you complete this quickstart, you can add an Azure Storage queue output binding to your function.

Si vous souhaitez consulter une version de cet article adaptée à Visual Studio Code, cliquez ici.There is also a Visual Studio Code-based version of this article.

PrérequisPrerequisites

Avant de commencer, vous devez :Before you start, you must:

Créer et activer un environnement virtuelCreate and activate a virtual environment

Vous devez utiliser un environnement Python 3.7 pour développer localement des fonctions Python.You should use a Python 3.7 environment to locally develop Python functions. Exécutez les commandes suivantes pour créer et activer un environnement virtuel nommé .venv.Run the following commands to create and activate a virtual environment named .venv.

Notes

Si Python n’a pas installé venv sur votre distribution Linux, vous pouvez l’installer à l’aide de la commande suivante :If Python didn't install venv on your Linux distribution, you can install it using the following command:

sudo apt-get install python3-venv

Bash :Bash:

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

PowerShell ou une invite de commandes Windows :PowerShell or a Windows command prompt:

py -m venv .venv
.venv\scripts\activate

Maintenant que vous avez activé l’environnement virtuel, exécutez-y les commandes restantes.Now that you activated the virtual environment, run the remaining commands in it. Pour sortir de l’environnement virtuel, exécutez deactivate.To get out of the virtual environment, run deactivate.

Créer un projet de fonctions localCreate a local functions project

Un projet de fonctions peut contenir plusieurs fonctions qui partagent les mêmes configurations locale et d’hébergement.A functions project can have multiple functions that all share the same local and hosting configurations.

Dans l’environnement virtuel, exécutez les commandes suivantes :In the virtual environment, run the following commands:

func init MyFunctionProj --python
cd MyFunctionProj

La commande func init crée un dossier MyFunctionProj.The func init command creates a MyFunctionProj folder. Le projet Python dans ce dossier n’a pas encore de fonctions.The Python project in this folder doesn't yet have any functions. Vous les ajouterez plus tard.You'll add them next.

Créer une fonctionCreate a function

Pour ajouter une fonction à votre projet, exécutez la commande suivante :To add a function to your project, run the following command:

func new --name HttpTrigger --template "HTTP trigger"

Cette commande crée un sous-dossier nommé HttpTrigger, qui contient les fichiers suivants :This commands creates a subfolder named HttpTrigger, which contains the following files:

  • function.JSON : fichier de configuration qui définit la fonction, le déclencheur et d’autres liaisons.function.json: configuration file that defines the function, trigger, and other bindings. Notez que dans ce fichier, la valeur de scriptFile pointe sur le fichier contenant la fonction et que le tableau bindings définit le déclencheur d’invocation et les liaisons.Notice that in this file, the value for scriptFile points to the file containing the function, and the bindings array defines the invocation trigger and bindings.

    Chaque liaison requiert une direction, un type et un nom unique.Each binding requires a direction, type and a unique name. Le déclencheur HTTP comporte une liaison d’entrée de type httpTrigger et une liaison de sortie de type http.The HTTP trigger has an input binding of type httpTrigger and output binding of type http.

  • __init__.py : fichier de script qui est votre fonction déclenchée via HTTP.__init__.py: script file that is your HTTP triggered function. Notez que ce script a une valeur main() par défaut.Notice that this script has a default main(). Les données HTTP du déclencheur sont passées à la fonction à l’aide du req nommé binding parameter.HTTP data from the trigger passes to the function using the req named binding parameter. req, qui est défini dans function.json, est une instance de la classe azure.functions.HttpRequest.The req, which is defined in function.json, is an instance of the azure.functions.HttpRequest class.

    L’objet retourné, défini comme $return dans function.json, est une instance de la classe azure.functions.HttpResponse.The return object, defined as $return in function.json, is an instance of azure.functions.HttpResponse class. Pour en savoir plus, voir Déclencheurs et liaisons HTTP Azure Functions.To learn more, see Azure Functions HTTP triggers and bindings.

Vous pouvez maintenant exécuter la nouvelle fonction sur votre ordinateur local.Now you can run the new function on your local computer.

Exécuter la fonction localementRun the function locally

Cette commande démarre l’application de fonction à l’aide du runtime Azure Functions (func.exe) :This command starts the function app using the Azure Functions runtime (func.exe):

func host start

Le résultat généré doit contenir les informations suivantes :You should see the following information written to the output:

Http Functions:

        HttpTrigger: http://localhost:7071/api/HttpTrigger    

Copiez l’URL de votre fonction HttpTrigger à comprise dans le résultat généré, puis collez-la dans la barre d’adresses de votre navigateur.Copy the URL of your HttpTrigger function from this output and paste it into your browser's address bar. Ajoutez la chaîne de requête ?name=<yourname> à cette URL et exécutez la demande.Append the query string ?name=<yourname> to this URL and execute the request. La capture d’écran suivante montre la réponse à la requête GET que la fonction locale retourne au navigateur :The following screenshot shows the response to the GET request that the local function returns to the browser:

Vérifier localement dans le navigateur

Utilisez Ctrl+C pour arrêter l’exécution de votre application de fonction.Use Ctrl+C to shut down your function app execution.

Maintenant que vous avez exécuté votre fonction localement, vous pouvez déployer votre code de fonction dans Azure.Now that you have run your function locally, you can deploy your function code to Azure.
Avant de pouvoir déployer votre application, vous devez créer des ressources Azure.Before you can deploy your app, you'll need to create some Azure resources.

Créer un groupe de ressourcesCreate a resource group

Créez un groupe de ressources avec la commande az group create.Create a resource group with the az group create command. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure comme les Function Apps, les bases de données et les comptes de stockage sont déployées et gérées.An Azure resource group is a logical container into which Azure resources like function apps, databases, and storage accounts are deployed and managed.

L’exemple suivant crée un groupe de ressources nommé myResourceGroup.The following example creates a resource group named myResourceGroup.
Si vous n’utilisez pas Cloud Shell, connectez-vous d’abord à l’aide de az login.If you aren't using Cloud Shell, sign in first using az login.

az group create --name myResourceGroup --location westeurope

Vous créez généralement votre groupe de ressources et les ressources dans une région proche de chez vous.You generally create your resource group and the resources in a region near you.

Création d'un compte Azure StorageCreate an Azure Storage account

Functions utilise un compte à usage général dans stockage Azure pour conserver l’état et d’autres informations sur vos fonctions.Functions uses a general-purpose account in Azure Storage to maintain state and other information about your functions. Créez un compte de stockage à usage général dans le groupe de ressources que vous avez créé à l’aide de la commande az storage account create.Create a general-purpose storage account in the resource group you created by using the az storage account create command.

Dans la commande suivante, indiquez un nom de compte de stockage global unique là où se trouve l’espace réservé <storage_name>.In the following command, substitute a globally unique storage account name where you see the <storage_name> placeholder. Les noms des comptes de stockage doivent comporter entre 3 et 24 caractères, uniquement des lettres minuscules et des chiffres.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

az storage account create --name <storage_name> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Créer une application de fonction dans AzureCreate a function app in Azure

Une application de fonction fournit un environnement pour l’exécution du code de votre fonction.A function app provides an environment for executing your function code. Elle vous permet de regrouper les fonctions en une unité logique pour faciliter la gestion, le déploiement et le partage des ressources.It lets you group functions as a logical unit for easier management, deployment, and sharing of resources.

Exécutez la commande ci-dessous.Run the following command. Remplacez <APP_NAME> par un nom d’application de fonction unique.Replace <APP_NAME> with a unique function app name. Remplacez <STORAGE_NAME> par un nom de compte de stockage.Replace <STORAGE_NAME> with a storage account name. <APP_NAME> représente également le domaine DNS par défaut pour l’application de fonction.The <APP_NAME> is also the default DNS domain for the function app. Ce nom doit être unique parmi toutes les applications dans Azure.This name needs to be unique across all apps in Azure.

Notes

Vous ne pouvez pas héberger des applications Linux et Windows dans le même groupe de ressources.You can't host Linux and Windows apps in the same resource group. Si vous disposez d’un groupe de ressources existant nommé myResourceGroup avec une application de fonction Windows ou une application web, vous devez utiliser un autre groupe de ressources.If you have an existing resource group named myResourceGroup with a Windows function app or web app, you must use a different resource group.

az functionapp create --resource-group myResourceGroup --os-type Linux \
--consumption-plan-location westeurope  --runtime python --runtime-version 3.7 \
--name <APP_NAME> --storage-account  <STORAGE_NAME>

La commande précédente crée une application de fonction exécutant Python 3.7.4.The preceding command creates a function app running Python 3.7.4. Elle provisionne également une instance Azure Application Insights associée dans le même groupe de ressources.It also provisions an associated Azure Application Insights instance in the same resource group. Vous pouvez utiliser cette instance pour superviser votre application de fonction et afficher les journaux.You can use this instance to monitor your function app and view logs.

Vous êtes désormais prêt à publier votre projet de fonctions local sur l’application de fonction dans Azure.You're now ready to publish your local functions project to the function app in Azure.

Déployer le projet d’application de fonction sur AzureDeploy the function app project to Azure

Après avoir créé l’application de fonction dans Azure, vous pouvez utiliser la commande Core Tools func azure functionapp publish pour déployer votre code de projet sur Azure.After you create the function app in Azure, you can use the func azure functionapp publish Core Tools command to deploy your project code to Azure. Dans cet exemple, remplacez <APP_NAME> par le nom de votre application.In this example, replace <APP_NAME> with the name of your app.

func azure functionapp publish <APP_NAME> --build remote

L’option --build remote permet de générer votre projet Python à distance dans Azure à partir des fichiers du package de déploiement, ce qui est recommandé.The --build remote option builds your Python project remotely in Azure from the files in the deployment package, which is recommended.

La sortie ressemble au message suivant.You'll see output similar to the following message. Elle est tronquée ici pour vous donner une meilleure lisibilité :It's truncated here so you can read it better:

Getting site publishing info...
...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in myfunctionapp:
    HttpTrigger - [httpTrigger]
        Invoke url: https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....

Vous pouvez copier la valeur Invoke url pour votre HttpTrigger et l’utiliser pour vérifier votre fonction dans Azure.You can copy the Invoke url value for your HttpTrigger and use it to verify your function in Azure. L’URL contient une valeur de chaîne de requête code qui est votre clé de fonction. Cette dernière empêche les autres utilisateurs d’appeler le point de terminaison de votre déclencheur HTTP dans Azure.The URL contains a code query string value that is your function key, which makes it difficult for others to call your HTTP trigger endpoint in Azure.

Vérifier la fonction dans AzureVerify the function in Azure

Utilisez cURL pour vérifier la fonction déployée.Use cURL to verify the deployed function. À l’aide de l’URL, laquelle inclut la clé de fonction, que vous avez copiée à l’étape précédente, ajoutez la chaîne de requête &name=<yourname> à l’URL.Using the URL, including the function key, that you copied from the previous step, append the query string &name=<yourname> to the URL.

Utiliser cURL pour appeler la fonction dans Azure.

Vous pouvez également coller l’URL copiée, y compris la clé de fonction, dans la barre d’adresse de votre navigateur web.You can also paste the copied URL, including the function key, into the address bar of your web browser. De nouveau, ajoutez la chaîne de requête &name=<yourname> à l'URL avant d'exécuter la requête.Again, append the query string &name=<yourname> to the URL before you execute the request.

Utiliser un navigateur web pour appeler la fonction.

Notes

Pour voir les journaux en quasi temps réel d’une application Python publiée, utilisez le flux de métriques temps réel Application Insights.To view near real-time logs for a published Python app, use the Application Insights Live Metrics Stream.

Étapes suivantesNext steps

Vous avez créé un projet de fonctions Python avec une fonction déclenchée via HTTP, l’avez exécuté sur votre ordinateur local et l’avez déployé sur Azure.You've created a Python functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. À présent, étendez votre fonction en effectuant un...Now, extend your function by...