Partager via


Développement d’applications Node.js serverless avec Azure Functions

Azure Functions fournit une infrastructure serverless puissante, ce qui vous permet de développer facilement des points de terminaison HTTP évolutifs à la demande. En utilisant JavaScript ou TypeScript, vous pouvez créer des applications serverless qui répondent à différents événements, ce qui vous permet de vous concentrer sur l’écriture de code sans vous soucier de la gestion des serveurs. Ce guide vous aide à commencer à développer des applications Node.js serverless à l’aide d’Azure Functions, en s’intégrant de manière transparente à d’autres services Azure.

Qu’est-ce qu’une ressource Functions ?

Une ressource Azure Functions est une unité logique regroupant toutes les fonctions associées dans un seul emplacement géographique Azure. La ressource peut contenir une fonction unique ou de nombreuses fonctions, qui peuvent être indépendantes les unes des autres ou associées à des liaisons d’entrée ou de sortie. Vous pouvez choisir parmi de nombreuses fonctions courantes ou créer les vôtres.

Les paramètres de ressources Functions incluent des configurations serverless standard, notamment pour les variables d’environnement, l’authentification, la journalisation et CORS.

Fonctions durables avec état

Durable Functions conserve l’état des fonctions durables ou gère les fonctions de longue durée dans Azure. Créez votre première fonction durable en JavaScript.

Les applications web statiques incluent des fonctions

Lorsque vous développez une application cliente frontale statique (comme Angular, React ou Vue), qui a également besoin d’API serverless, utilisez applications web statiques avec des fonctions pour regrouper les deux.

Proxy de l’application cliente à l’API

Si vous envisagez de déployer votre API avec votre application web statique, vous n’avez pas besoin de proxyr les appels d’API de votre application cliente. Le proxy est établi pour vous lorsque vous déployez l’application Azure Functions en tant qu’application managée.

Lorsque vous développez localement avec une application web statique et Azure Functions, l’interface CLI Azure Static Web Apps fournit le proxy local.

Paramètres de sécurité courants à configurer pour votre fonction Azure

Les paramètres courants suivants doivent être configurés pour garantir la sécurité de votre fonction Azure :

  • Authentification et autorisation :
    • Utilisez l’ID Microsoft Entra (anciennement Azure Active Directory) pour une authentification robuste. Configurez votre application de fonction pour exiger des jetons OAuth2 pour les charges de travail de production.
    • Évitez d’utiliser des clés de fonction pour les applications sensibles. Au lieu de cela, intégrez à Microsoft Entra ID ou validez les jetons JWT dans votre code de fonction.
    • Utilisez des identités managées pour authentifier votre application de fonction avec d’autres ressources Azure, ce qui garantit que chaque fonction obtient uniquement l’accès dont elle a besoin.
  • Paramètres de configuration :
    • Paramètres d’application : créez des paramètres d’application pour les paramètres qui n’ont pas d’impact sur la sécurité.
    • Secrets et clés : pour tous les paramètres qui ont un impact sur la sécurité, utilisez cette approche hiérarchisé :
      1. Tout d’abord, utilisez l’ID Microsoft Entra pour l’authentification lorsqu’il est pris en charge.
      2. Pour les intégrations qui ne prennent pas en charge Entra ID, stockez les secrets dans Azure Key Vault et extrayez ces paramètres à partir de votre coffre de clés.
      3. N’incorporez jamais de secrets dans des fichiers de code ou de configuration.
    • Pour obtenir d’autres paramètres de sécurité de plateforme, consultez Sécurisation d’Azure Functions.
  • Sécurité réseau :
    • CORS : configurez vos domaines clients. N’utilisez *pas , indiquant tous les domaines.
    • Intégration de réseau virtuel : utilisez des points de terminaison privés ou une intégration de réseau virtuel pour limiter l’exposition du réseau et restreindre le trafic entrant à partir de sources approuvées.
  • HTTPS et chiffrement :
    • Paramètre TLS/SSL pour HTTPS - Par défaut, votre API accepte les requêtes HTTP et HTTPS. Activez HTTPS uniquement dans les Paramètres TLS/SSL. Étant donné que votre application de fonction est hébergée sur un sous-domaine sécurisé, vous pouvez l’utiliser immédiatement (avec https) et retarder l’achat d’un nom de domaine et l’utilisation d’un certificat pour le domaine jusqu’à ce que vous soyez prêt.
  • Déploiement et surveillance :
    • Emplacements de déploiement - Créez un emplacement de déploiement, comme stage ou preflight, et effectuez un envoi (push) à cet emplacement. Échangez cet emplacement intermédiaire en production lorsque vous êtes prêt. Ne prenez pas l’habitude de pousser manuellement vers la production. Votre base de code doit indiquer la version ou valider celle qui se trouve sur un emplacement.
    • Activez Application Insights pour la télémétrie en temps réel, les alertes et la détection des anomalies pour surveiller vos fonctions et journaux d’audit pour une activité suspecte.

Pour obtenir des conseils de sécurité complets, consultez Sécurisation d’Azure Functions.

Options d’hébergement pour Azure Functions

Vous pouvez héberger Azure Functions de différentes façons en fonction de vos besoins :

Plans d’hébergement de ressources Azure Functions

Lorsque vous créez une ressource Azure Functions, vous pouvez choisir parmi ces plans d’hébergement :

  • Plan de consommation : payez uniquement pour le temps pendant lequel vos fonctions s’exécutent et bénéficiez d'une mise à l’échelle automatique.
  • Plan Flex Consumption : fournit un contrôle amélioré avec des instances toujours prêtes pour réduire les démarrages à froid, l’intégration de réseau virtuel et les tailles d’instance configurables (512 Mo à 4 Go). Ce plan est recommandé pour les nouvelles charges de travail Linux nécessitant des fonctionnalités de sécurité et de performances d’entreprise. Notez que ce plan utilise la facturation basée sur l’exécution similaire au plan Consommation, mais avec des coûts supplémentaires pour les fonctionnalités telles que les instances toujours prêtes.
  • Plan Premium : offre des performances améliorées avec des instances préchauffées, une connectivité de réseau virtuel et des durées d’exécution plus longues.
  • Plan Dédié (App Service) : exécutez des fonctions sur des machines virtuelles dédiées pour des coûts prévisibles et un contrôle total sur l’environnement d’exécution.

Pour plus d’informations sur le choix du plan d’hébergement approprié, consultez les options d’hébergement d’Azure Functions.

Ressource Azure Container Apps

Vous pouvez également déployer Azure Functions sur une ressource Azure Container Apps en tant que charges de travail conteneurisées. Cette option offre un contrôle total sur l’environnement de conteneur et est idéale lorsque vous avez besoin de dépendances personnalisées, de processus de longue durée ou de combinaison de fonctions avec d’autres microservices conteneurisés. Pour plus d’informations, consultez l’hébergement Azure Container Apps d’Azure Functions .

Conditions préalables pour le développement d’Azure Functions

  • Node.js LTS : utilisez la dernière version de support à long terme (LTS) pour obtenir les meilleures mises à jour de compatibilité et de sécurité avec Azure Functions.
  • Azure Functions Core Tools : utilisez la version principale actuelle pour le développement et le débogage locaux.

Fonction JavaScript simple pour les requêtes HTTP

Une fonction est une fonction asynchrone exportée qui contient des informations sur la requête et le contexte. La capture d’écran partielle suivante du portail Azure montre le code d’une fonction.

import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";

export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);

    return {
        status: 200,
        jsonBody: {
            env: process.env
        }
    };
};

app.http('status', {
    route: "status",
    methods: ['GET'],
    authLevel: 'anonymous',
    handler: status
});

Développer des fonctions localement avec Visual Studio Code et des extensions

Créez votre première fonction à l’aide de Visual Studio Code. Visual Studio Code simplifie la plupart des détails avec l’extension Azure Functions.

Cette extension vous aide à créer des fonctions JavaScript et TypeScript avec des modèles courants.

Intégrer à d’autres services Azure

Les fonctions serverless suppriment la majeure partie de la configuration et de la gestion du serveur, ce qui vous permet de vous concentrer seulement sur le code dont vous avez besoin.

  • Fonctions de faible code : Avec Azure Functions, vous créez des fonctions déclenchées par d’autres services Azure ou cette sortie vers d’autres services Azure à l’aide de liaisons de déclencheur. Le modèle de programmation v4 inscrit tous les déclencheurs et liaisons directement dans votre code, ce qui rend le type de configuration sécurisé et intuitif.
  • Fonctions à code élevé : Pour plus de contrôle, utilisez les kits de développement logiciel (SDK) Azure pour coordonner et contrôler d’autres services Azure. Utilisez des identités managées pour authentifier en toute sécurité vos fonctions avec d’autres ressources Azure sans gérer les informations d’identification.