Démarrage rapide : Créer une fonction C# dans Azure à partir de la ligne de commande
Dans cet article, vous utilisez les outils ligne de commande pour créer une fonction C# 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.
Cet article crée une fonction déclenchée par HTTP qui s'exécute sur .NET 8 dans un processus Worker isolé. Pour obtenir des informations sur les versions de .NET prises en charge pour les fonctions C#, consultez Versions prises en charge. Il existe également une version basée sur Visual Studio Code de cet article.
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.
Configurer votre environnement local
Avant de commencer la lecture cet article, vous devez disposer des éléments suivants :
Un des outils suivants pour créer des ressources Azure :
Azure CLI version 2.4 ou ultérieure.
Le module Az PowerShell version 5.9.0 ou ultérieure.
Vous avez aussi besoin d’un compte Azure avec un abonnement actif. Créez un compte gratuitement.
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 :
- v4.x - Windows 64 bits (Recommandé. Le débogage de Visual Studio Code nécessite 64 bits.)
- v4.x – Windows 32 bits
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.
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 --worker-runtime dotnet-isolated --target-framework net8.0
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.
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 fichier de code HttpExample.cs.
(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.
HttpExample.cs
HttpExample.cs contient une méthode Run
qui reçoit des données de requête dans la variable req
en tant qu'objet HttpRequest. Ce paramètre est décoré avec l'attribut HttpTriggerAttribute, pour définir le comportement du déclencheur.
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Company.Function
{
public class HttpExample
{
private readonly ILogger<HttpExample> _logger;
public HttpExample(ILogger<HttpExample> logger)
{
_logger = logger;
}
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Welcome to Azure Functions!");
}
}
}
L'objet de retour est un objet IActionResult qui contient les données renvoyées dans la réponse HTTP.
Pour en savoir plus, voir Déclencheurs et liaisons HTTP Azure Functions.
Exécuter la fonction localement
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 :
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Notes
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.
Copiez l’URL de votre fonction
HttpExample
à partir de cette sortie dans un navigateur et accédez à l’URL de la fonction. Vous devez recevoir un message Bienvenue dans Azure Functions.Quand vous avez terminé, utilisez Ctrl+C, puis choisissez
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.
Si vous ne l’avez pas déjà fait, connectez-vous à Azure :
az login
La commande az login vous connecte à votre compte Azure.
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>
.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.
Créer l’application de fonction dans Azure :
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --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 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 de fonctions locales en utilisant la commande func azure functionapp publish
.
Dans votre dossier de projet racine, exécutez cette commande func azure functionapp publish
:
func azure functionapp publish <APP_NAME>
Dans cet exemple, remplacez <APP_NAME>
par le nom de votre application. Un déploiement réussi donne des résultats similaires à la sortie suivante (tronquée pour des raisons 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 et prend en charge des requêtes GET, vous l’appelez en adressant une requête HTTP à son URL. Il est plus facile d’effectuer cette opération dans un navigateur.
Copiez l’URL d’appel complète affichée dans la sortie de la commande de publication dans la barre d’adresse d’un navigateur. Quand vous accédez à cette URL, le navigateur doit afficher une sortie similaire à celle générée au moment de l’exécution locale de la fonction.
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