Introduction
Azure Functions permet d'exécuter du code serverless sans gérer d'infrastructure. En 2026, l'intégration avec TypeScript offre une expérience de développement moderne avec typage fort et outils avancés. Ce tutoriel vous guide pas à pas pour créer des fonctions avec triggers HTTP et Timer, du setup local au déploiement sur Azure. Idéal pour les développeurs intermédiaires souhaitant optimiser des workflows automatisés ou des APIs légères.
Prérequis
- Node.js 20+ et npm
- Azure CLI installé et connecté
- Compte Azure avec abonnement actif
- Connaissances de base en TypeScript et REST
Initialiser le projet
npm install -g azure-functions-core-tools@4
func init myFunctionApp --typescript
cd myFunctionApp
npm installCette commande installe les outils Azure Functions et initialise un projet TypeScript. Le dossier contient les fichiers de configuration nécessaires pour le runtime v4.
Créer un trigger HTTP
import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
export async function httpTrigger(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Requête HTTP reçue pour ${request.url}`);
const name = request.query.get('name') || await request.text() || 'World';
return { body: `Hello, ${name}!` };
}
app.http('httpTrigger', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: httpTrigger
});Ce code définit une fonction HTTP qui accepte GET et POST. Elle logue la requête et retourne un message personnalisé. Le typage assure la sécurité et l'autocomplétion.
Ajouter un trigger Timer
import { app, InvocationContext, Timer } from '@azure/functions';
export async function timerTrigger(myTimer: Timer, context: InvocationContext): Promise<void> {
context.log('Timer déclenché à', new Date().toISOString());
// Logique métier ici
}
app.timer('timerTrigger', {
schedule: '0 */5 * * * *',
handler: timerTrigger
});Cette fonction s'exécute toutes les 5 minutes via CRON. Le contexte permet le logging et l'accès aux bindings pour des tâches planifiées fiables.
Configurer local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"FUNCTIONS_WORKER_RUNTIME_VERSION": "~20"
}
}Ce fichier configure l'environnement local pour le stockage et le runtime Node. Utilisez des variables d'environnement réelles en production.
Déployer sur Azure
az login
az group create --name rg-functions --location westeurope
az storage account create --name mystoragefunc --resource-group rg-functions --location westeurope --sku Standard_LRS
func azure functionapp create --resource-group rg-functions --consumption-plan-location westeurope --runtime node --runtime-version 20 --functions-version 4 --name myfuncapp2026 --storage-account mystoragefunc
func azure functionapp publish myfuncapp2026Ces commandes créent les ressources Azure et publient le code. Le plan Consumption est économique pour les charges variables.
Bonnes pratiques
- Utilisez des variables d'environnement pour les secrets
- Implémentez la gestion des erreurs avec try/catch dans chaque handler
- Activez Application Insights pour le monitoring
- Limitez la durée d'exécution des fonctions
- Testez localement avec func start avant déploiement
Erreurs courantes à éviter
- Oublier de configurer AzureWebJobsStorage provoque des erreurs de binding
- Utiliser des versions incompatibles du runtime Node
- Ignorer les timeouts sur les triggers Timer
- Ne pas valider les inputs des requêtes HTTP
Pour aller plus loin
Explorez les Durable Functions pour les workflows complexes. Découvrez nos formations Learni sur Azure et le serverless.