Skip to content
Learni
View all tutorials
Cloud & DevOps

Comment développer des Azure Functions en TypeScript en 2026

18 minINTERMEDIATE

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

terminal
npm install -g azure-functions-core-tools@4
func init myFunctionApp --typescript
cd myFunctionApp
npm install

Cette 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

src/functions/httpTrigger.ts
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

src/functions/timerTrigger.ts
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

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

terminal
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 myfuncapp2026

Ces 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.