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

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

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

Si vous souhaitez consulter une version de cet article adaptée à Visual Studio Code, cliquez ici.

Configurer votre environnement local

Avant de commencer la lecture cet article, vous devez disposer des éléments suivants :

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.

Créer un projet de fonction local

Dans Azure Functions, un projet de fonction est un conteneur pour une ou plusieurs fonctions qui répondent chacune à un déclencheur spécifique. Toutes les fonctions d’un projet partagent les mêmes configurations locale et d’hébergement. Dans cette section, vous créez un projet de fonction qui contient une seule fonction.

  1. Exécutez la commande func init, de la façon suivante, pour créer un projet Functions dans un dossier nommé LocalFunctionProj avec le runtime spécifié :

    func init LocalFunctionProj --powershell
    
  2. Accédez au dossier du projet :

    cd LocalFunctionProj
    

    Ce dossier contient 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.

  3. 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"
    

    func new crée un sous-dossier correspondant au nom de la fonction qui contient le fichier de code approprié au langage choisi pour le projet, et un fichier config nommé function.json.

(Facultatif) Examiner le contenu du fichier

Si vous le souhaitez, vous pouvez passer à Exécuter la fonction localement et examiner le contenu du fichier plus tard.

run.ps1

run.ps1 définit un script de fonction qui est déclenché selon la configuration définie dans function.json.

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
    $name = $Request.Body.Name
}

$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."

if ($name) {
    $body = "Hello, $name. This HTTP triggered function executed successfully."
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $body
})

Pour un déclencheur HTTP, la fonction reçoit les données de requête passées au paramètre $Request, tel que cela est défini dans function.json. L’objet retourné, défini comme Response dans function.json, est passé à l’applet de commande Push-OutputBinding comme réponse.

function.json

function.json est un fichier config qui définit le bindings d’entrée et de sortie de la fonction, notamment le type du déclencheur.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

Chaque liaison nécessite une direction, un type et un nom unique. Le déclencheur HTTP comporte une liaison d’entrée de type httpTrigger et une liaison de sortie de type http.

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 sert à conserver l’état et d’autres informations sur vos fonctions.
  • 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 vous ne l’avez pas déjà fait, 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>.

  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 --allow-blob-public-access false
    

    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.

Important

Le compte de stockage permet de stocker les données importantes de l’application, dont parfois le code proprement dit de l’application. Vous devez limiter l’accès des autres applications et utilisateurs au compte de stockage.

  1. Créer l’application de fonction dans Azure :

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime powershell --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    La commande az functionapp create crée l’application de fonction dans Azure.

    Dans l’exemple précédent, remplacez <STORAGE_NAME> par le nom du compte que vous avez utilisé à l’étape précédente, puis remplacez <APP_NAME> par le nom global unique qui vous convient. <APP_NAME> représente également le domaine DNS par défaut pour l’application de fonction.

    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 provisionne également 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 au sein de la sortie de la commande de publication 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.

The output of the function run on Azure in a browser

Exécutez la commande suivante pour afficher les journaux de streaming en temps quasi-réel :

func azure functionapp logstream <APP_NAME> 

Dans une fenêtre de terminal distincte ou dans le navigateur, appelez à nouveau la fonction distante. Un journal détaillé de l’exécution de la fonction dans Azure est affiché dans le terminal.

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