Tutoriel : intégrer des Azure Functions à un réseau virtuel Azure à l’aide de points de terminaison privés

Ce tutoriel vous montre comment utiliser Azure Functions pour vous connecter aux ressources d’un réseau virtuel Azure en utilisant des points de terminaison privé. Vous créez une application de fonction avec un nouveau compte de stockage verrouillé derrière un réseau virtuel via le portail Azure. Le réseau virtuel utilise un déclencheur de file d’attente Service Bus.

Dans ce didacticiel, vous allez :

  • Créez une application de fonction dans le plan Elastic Premium avec une intégration de réseau virtuel et des points de terminaison privés.
  • Créer des ressources Azure, telles que Service Bus
  • Verrouillez votre Service Bus derrière un point de terminaison privé.
  • Déployez une application de fonction qui utilise à la fois les déclencheurs Service Bus et HTTP.
  • Vérifiez que votre application de fonction est sécurisée dans le réseau virtuel.
  • Supprimer des ressources.

Créer une application de fonction sur le plan Premium

Vous créez une application de fonction C# dans un plan Elastic Premium, qui prend en charge des fonctionnalités de mise en réseau telles que l’intégration de réseau virtuel lors de la création, ainsi qu’une mise à l’échelle serverless. Ce tutoriel utilise C# et Windows. D’autres langages et Linux sont également pris en charge.

  1. Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource.

  2. Dans la page Nouveau, sélectionnez Calcul>Application de fonction.

  3. Dans la page De base, utilisez les paramètres d’application de fonction comme indiqué dans le tableau ci-dessous.

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement sous lequel est créée cette nouvelle application de fonction est créée.
    Groupe de ressources myResourceGroup Nom du nouveau groupe de ressources dans lequel vous créez votre application de fonction.
    Nom de l’application de fonction Nom globalement unique Nom qui identifie votre nouvelle Function App. Les caractères valides sont a-z (insensible à la casse), 0-9et -.
    Publier Code Choix de publier des fichiers de code ou un conteneur Docker.
    Pile d’exécution .NET Ce tutoriel utilise .NET.
    Version 6 (LTS) Ce tutoriel utilise .NET 6.0 s’exécutant dans le même processus que l’hôte Functions.
    Région Région recommandée Choisissez une région près de chez vous ou près d’autres services auxquels ont accès vos fonctions.
    Système d’exploitation Windows Ce tutoriel utilise Windows, mais fonctionne également avec Linux.
    Plan Functions Premium Plan d’hébergement qui définit la façon dont les ressources sont allouées à votre Function App. Par défaut, lorsque vous sélectionnez Premium, un plan App Service est créé. La valeur par défaut pour Sku and size est EP1, où EP signigie elastic premium. Pour plus d’informations, consultez la liste de références SKU Premium.

    Lorsque vous exécutez des fonctions JavaScript dans un plan Premium, choisissez une instance qui comporte moins de processeurs virtuels. Pour plus d’informations, consultez Choisir des plans Premium à un cœur.
  4. Sélectionnez Suivant : Stockage. Dans la page Stockage, entrez les paramètres suivants.

    Paramètre Valeur suggérée Description
    Compte de stockage Nom globalement unique Créez un compte de stockage utilisé par votre application de fonction. Les noms des comptes de stockage doivent comprendre entre 3 et 24 caractères. Ils peuvent contenir uniquement des chiffres et des lettres minuscules. Vous pouvez également utiliser un compte existant qui n’est pas restreint par des règles de pare-feu et qui répond aux exigences relatives aux comptes de stockage. Lorsque vous utilisez Functions avec un compte de stockage verrouillé, un compte de stockage v2 est nécessaire. Il s’agit de la version de stockage par défaut créée lors de la création d’une application de fonction avec des fonctionnalités de mise en réseau via le panneau Créer.
  5. Sélectionnez Suivant : Réseau. Dans la page Mise en réseau, entrez les paramètres suivants.

    Notes

    Certains de ces paramètres ne sont pas visibles tant que d’autres options ne sont pas sélectionnées.

    Paramètre Valeur suggérée Description
    Activer l’accès public Désactivé Refuser l’accès au réseau public bloquera tout le trafic entrant, sauf celui provenant de points de terminaison privés.
    Activer l’injection sur le réseau Activé La possibilité de configurer votre application avec une intégration au réseau virtuel lors de la création s’affiche dans la fenêtre du portail une fois cette option activée.
    Réseau virtuel Création Sélectionnez le champ Créer un nouveau. Dans l’écran contextuel, donnez un nom à votre réseau virtuel, puis sélectionnez OK. Les options permettant de restreindre les accès entrant et sortant de votre application de fonction lors de la création s’affichent. Vous devez activer explicitement l’intégration au réseau virtuel dans la partie Accès sortant de la fenêtre pour restreindre l’accès sortant.

    Entrez les paramètres suivants dans la section Accès entrant. Cette étape crée un point de terminaison privé sur votre application de fonction.

    Conseil

    Pour continuer à interagir avec votre application de fonction à partir du portail, vous devrez ajouter votre ordinateur local au réseau virtuel. Si vous ne souhaitez pas restreindre l’accès entrant, ignorez cette étape.

    Paramètre Valeur suggérée Description
    Activer les points de terminaison privés Activé La possibilité de configurer votre application avec une intégration au réseau virtuel lors de la création apparaît dans le portail une fois cette option activée.
    Nom du point de terminaison privé myInboundPrivateEndpointName Nom qui identifie le nouveau point de terminaison privé de votre application de fonction.
    Sous-réseau entrant Création Cette option crée un sous-réseau pour votre point de terminaison privé entrant. Plusieurs points de terminaison privés peuvent être ajoutés à un sous-réseau unique. Indiquez un Nom de sous-réseau. Le Bloc d’adresse du sous-réseau peut rester à la valeur par défaut. Sélectionnez OK. Pour en savoir plus sur le dimensionnement d’un sous-réseau, consultez Sous-réseaux.
    DNS Zone DNS privée Azure Cette valeur indique le serveur DNS utilisé par votre point de terminaison privé. Dans la plupart des cas, si vous travaillez dans Azure, la zone Azure DNS privée est la zone DNS que vous devez utiliser car l’utilisation de Manuel pour des zones DNS personnalisées accroît la complexité.

    Entrez les paramètres suivants dans la section Accès sortant. Cette étape intègre votre application de fonction à un réseau virtuel lors de la création. Il expose également des options permettant de créer des points de terminaison privés sur votre compte de stockage et de restreindre l’accès réseau à votre compte de stockage lors de la création. Lorsque l’application de fonction est intégrée au réseau virtuel, tout le trafic sortant passe par défaut par le réseau virtuel..

    Paramètre Valeur suggérée Description
    Activer l’intégration au réseau virtuel Activé Cela intègre votre application de fonction à un réseau virtuel lors de la création et dirige tout le trafic sortant à travers le réseau virtuel.
    Sous-réseau sortant Créer nouveau Cela crée un nouveau sous-réseau lors de l’intégration au réseau virtuel de votre application de fonction. Une application de fonction ne peut être intégrée à un réseau virtuel qu’avec un sous-réseau vide. Indiquez un Nom de sous-réseau. Le Bloc d’adresse du sous-réseau peut rester à la valeur par défaut. Si vous souhaitez le configurer, découvrez plus en détail le dimensionnement du sous-réseau ici. Sélectionnez OK. L’option permettant de créer des points de terminaison privés de stockage s’affiche. Pour utiliser votre application de fonction avec des réseaux virtuels, vous devez la joindre à un sous-réseau.

    Entrez les paramètres suivants dans la section Point de terminaison privé de stockage. Cette étape crée des points de terminaison privés pour les points de terminaison d’objet blob, de file d’attente, de fichier et de table sur votre compte de stockage lors de la création. Cela intègre efficacement votre compte de stockage au réseau virtuel.

    Paramètre Valeur suggérée Description
    Ajouter un point de terminaison privé de stockage Activé La possibilité de configurer votre application avec une intégration au réseau virtuel lors de la création s’affiche dans le portail une fois cette option activée.
    Nom du point de terminaison privé myInboundPrivateEndpointName Nom qui identifie le point de terminaison privé de votre compte de stockage.
    Sous-réseau de point de terminaison privé Création Cela crée un sous-réseau pour votre point de terminaison privé entrant sur le compte de stockage. Plusieurs points de terminaison privés peuvent être ajoutés à un sous-réseau unique. Indiquez un Nom de sous-réseau. Le Bloc d’adresse du sous-réseau peut rester à la valeur par défaut. Si vous souhaitez le configurer, découvrez plus en détail le dimensionnement du sous-réseau ici. Sélectionnez OK.
    DNS Zone DNS privée Azure Cette valeur indique le serveur DNS utilisé par votre point de terminaison privé. Dans la plupart des cas, si vous travaillez dans Azure, la zone Azure DNS privée est la zone DNS que vous devez utiliser car l’utilisation de Manuel pour des zones DNS personnalisées accroîtra la complexité.
  6. Sélectionnez Suivant : Supervision. Dans la page Supervision, entrez les paramètres suivants.

    Paramètre Valeur suggérée Description
    Application Insights Default Créez une ressource Application Insights avec le même nom d’application dans la région prise en charge la plus proche. Développez ce paramètre si vous devez modifier le nom de la nouvelle ressource ou stockez vos données dans un Emplacement différent dans une zone géographique Azure.
  7. Sélectionnez Vérifier + créer pour passer en revue les sélections de configuration d’application.

  8. Dans la page Vérifier + créer, passez en revue vos paramètres. Sélectionnez ensuite Créer pour créer et déployer l’application de fonction.

  9. Cliquez sur l’icône Notifications dans l’angle supérieur droit du portail pour voir le message Déploiement réussi.

  10. Sélectionnez Accéder à la ressource pour afficher votre nouvelle application de fonction. Vous pouvez également sélectionner Épingler au tableau de bord. L’épinglage permet de revenir plus facilement à cette ressource d’application de fonction à partir de votre tableau de bord.

Félicitations ! Vous avez créé votre application de fonction Premium avec succès !

Notes

Certains déploiements peuvent échouer à créer les points de terminaison privés dans le compte de stockage et afficher l’erreur « StorageAccountOperationInProgress ». Cet échec se produit même si l’application de fonction elle-même est créée avec succès. Lorsque vous rencontrez une telle erreur, supprimez l’application de fonction et renouvelez l’opération. Vous pouvez créer manuellement les points de terminaison privés sur le compte de stockage.

Créer un Service Bus

Ensuite, vous créez une instance Service Bus utilisée pour tester les fonctionnalités du réseau de votre application de fonction dans ce tutoriel.

  1. Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource.

  2. Dans la page Nouveau, recherchez Service Bus. Sélectionnez ensuite Créer.

  3. Dans l’onglet De base, utilisez le tableau suivant pour configurer les paramètres du Service Bus. Tous les autres paramètres peuvent utiliser les valeurs par défaut.

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement dans lequel vos ressources sont créées.
    Groupe de ressources myResourceGroup Le groupe de ressources que vous avez créé avec votre application de fonction.
    Nom de l’espace de noms myServiceBus Nom de l’instance Service Bus sur laquelle le point de terminaison privé est activé.
    Emplacement myFunctionRegion La région dans laquelle vous avez créé votre application de fonction.
    Niveau tarifaire Premium Choisissez ce niveau pour utiliser des points de terminaison privés avec Azure Service Bus.
  4. Sélectionnez Revoir + créer. Une fois la validation terminée, sélectionnez Créer.

Verrouiller votre Service Bus

Créez le point de terminaison privé pour verrouiller votre Service Bus :

  1. Dans votre nouveau Service Bus, sélectionnez Mise en réseau dans le menu de gauche.

  2. Sélectionnez l’onglet Connexions des points de terminaison privés, puis sélectionnez Point de terminaison privé.

    Screenshot of how to go to private endpoints for the Service Bus.

  3. Dans l’onglet De base, utilisez les paramètres de point de terminaison privé indiqués dans le tableau suivant.

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement dans lequel vos ressources sont créées.
    Groupe de ressources myResourceGroup Le groupe de ressources que vous avez créé avec votre application de fonction.
    Nom sb-endpoint Nom du point de terminaison privé du Service Bus.
    Région myFunctionRegion La région dans laquelle vous avez créé votre compte de stockage.
  4. Dans l’onglet Ressource, utilisez les paramètres de point de terminaison privé indiqués dans le tableau suivant.

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement sous lequel vos ressources sont créées.
    Type de ressource Microsoft.ServiceBus/namespaces Type de ressource pour le Service Bus.
    Ressource myServiceBus Le Service Bus que vous avez créé précédemment dans le tutoriel.
    Sous-ressource cible espace de noms Point de terminaison privé utilisé pour l’espace de noms du Service Bus.
  5. Sous l’onglet Réseau virtuel, dans le paramètre Sous-réseau, choisissez Par défaut.

  6. Sélectionnez Revoir + créer. Une fois la validation terminée, sélectionnez Créer.

  7. Une fois le point de terminaison privé créé, revenez à la section Mise en réseau de votre espace de noms Service Bus et cochez l’onglet Accès public.

  8. Vérifiez que l’option Réseaux sélectionnés est sélectionnée.

  9. Sélectionnez + Ajouter un réseau virtuel existant pour ajouter le réseau virtuel récemment créé.

  10. Sous l’onglet Ajouter des réseaux, utilisez les paramètres réseau du tableau suivant :

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Abonnement sous lequel vos ressources sont créées.
    Réseaux virtuels myVirtualNet Nom du réseau virtuel auquel votre application de fonction se connecte.
    Sous-réseaux functions Nom du sous-réseau auquel votre application de fonction se connecte.
  11. Sélectionnez Ajouter l’adresse IP de votre client pour permettre à l’adresse IP de votre client actuel d’accéder à l’espace de noms.

    Notes

    Vous devez autoriser l’adresse IP de votre client pour permettre au portail Azure de publier des messages dans la file d’attente ultérieurement dans ce tutoriel.

  12. Sélectionnez Activer pour activer le point de terminaison de service.

  13. Sélectionnez Ajouter pour ajouter le réseau virtuel et le sous-réseau sélectionnés aux règles de pare-feu pour le Service Bus.

  14. Sélectionnez Enregistrer pour enregistrer le paramètre d’entrée mis à jour.

Les ressources du réseau virtuel peuvent désormais communiquer avec le Service Bus à l’aide du point de terminaison privé.

Créer une file d’attente

Créez la file d’attente dans laquelle votre déclencheur Service Bus d’Azure Functions obtient les événements suivants :

  1. Dans votre Service Bus, sélectionnez Files d’attente dans le menu de gauche.

  2. Sélectionnez File d’attente. Dans le cadre de ce tutoriel, indiquez la file d’attente comme nom de la nouvelle file d’attente.

    Screenshot of how to create a Service Bus queue.

  3. Sélectionnez Créer.

Obtenir une chaîne de connexion Service Bus

  1. Dans votre Service Bus, sélectionnez Stratégies d’accès partagé dans le menu de gauche.

  2. Sélectionnez RootManageSharedAccessKey. Copiez et enregistrez la Chaîne de connexion principale. Vous avez besoin de cette chaîne de connexion lorsque vous configurez les paramètres de l’application.

    Screenshot of how to get a Service Bus connection string.

Configurer vos paramètres d’application de fonction

  1. Dans votre application de fonction, dans le menu sur la gauche, sélectionnez Configuration.

  2. Pour utiliser votre application de fonction avec des réseaux virtuels et le Service Bus, mettez à jour les paramètres d’application indiqués dans le tableau suivant. Pour ajouter ou modifier un paramètre, sélectionnez + Nouveau paramètre d'application ou l’icône Modifier dans la colonne la plus à droite du tableau des paramètre d'application. Lorsque vous avez terminé, sélectionnez Enregistrer.

    Paramètre Valeur suggérée Description
    SERVICEBUS_CONNECTION myServiceBusConnectionString Créez ce paramètre d’application pour la chaîne de connexion de votre Service Bus. Cette chaîne de connexion de stockage provient de la section Obtenir la chaîne de connexion Service Bus.
    WEBSITE_CONTENTOVERVNET 1 Créez ce paramètre d’application. La valeur 1 permet à votre application de fonction de se mettre à l’échelle lorsque votre compte de stockage est limité à un réseau virtuel.
  3. Étant donné que vous utilisez un plan d’hébergement Elastic Premium, dans l’affichage Configuration, sélectionnez l’onglet Paramètres de runtime de fonction. Définissez Analyse de la mise à l’échelle du runtime sur Activé. Ensuite, sélectionnez Enregistrer. La mise à l’échelle pilotée par le runtime vous permet de connecter des fonctions de déclencheur non HTTP à des services qui s’exécutent dans votre réseau virtuel.

    Screenshot of how to enable runtime-driven scaling for Azure Functions.

Remarque

La mise à l’échelle du runtime n’est pas nécessaire sur les applications de fonction hébergées dans un plan App Service dédié.

Déployer un déclencheur Service Bus et un déclencheur HTTP

Notes

L’activation de points de terminaison privés sur une application de fonction rend également le site du gestionnaire de contrôle des services (SCM) publiquement inaccessible. Les instructions suivantes fournissent des conseils de déploiement à l’aide du Centre de déploiement de l’application de fonction. Vous pouvez également utiliser les agents de déploiement zip ou auto-hébergés qui sont déployés dans un sous-réseau sur le réseau virtuel.

  1. Dans GitHub, accédez à l’exemple de référentiel suivant. Il contient une application de fonction et deux fonctions : un déclencheur HTTP et un déclencheur de file d’attente Service bus.

    https://github.com/Azure-Samples/functions-vnet-tutorial

  2. En haut de la page, sélectionnez le bouton Duplication pour créer une duplication (fork) de ce référentiel dans votre propre compte ou organisation GitHub.

  3. Dans votre application de fonction, dans le menu sur la gauche, sélectionnez Centre de déploiement. Sélectionnez ensuite Paramètres.

  4. Dans l’onglet Paramètres, utilisez les paramètres de déploiement indiqués dans le tableau suivant.

    Paramètre Valeur suggérée Description
    Source GitHub Vous devez avoir créé un référentiel GitHub avec l’exemple de code à l’étape 2.
    Organisation myOrganization Organisation dans laquelle votre référentiel est archivée. Il s’agit généralement de votre compte.
    Référentiel functions-vnet-tutorial Référentiel dupliqué (fork) depuis https://github.com/Azure-Samples/functions-vnet-tutorial.
    Branche main Branche primaire du référentiel que vous avez créé.
    Pile d’exécution .NET L’exemple de code est dans C#.
    Version .NET Core 3.1 Version du runtime
  5. Sélectionnez Enregistrer.

    Screenshot of how to deploy Azure Functions code through the portal.

  6. Votre déploiement initial peut prendre quelques minutes. Lorsque votre application est déployée avec succès, un message d’état Succès (actif) s’affiche dans l’onglet Journaux. Si nécessaire, actualisez la page.

Félicitations ! Vous avez déployé avec succès votre exemple d’application de fonction.

Tester votre application de fonction verrouillée

  1. Dans votre application de fonction, dans le menu sur la gauche, sélectionnez Fonctions.

  2. Sélectionnez ServiceBusQueueTrigger.

  3. Dans le menu de gauche, sélectionnez Surveiller.

Vous voyez que vous ne pouvez pas surveiller votre application. En effet, votre navigateur n’a pas accès au réseau virtuel, il ne peut donc pas accéder directement aux ressources au sein du réseau virtuel.

Voici une autre façon de surveiller votre fonction en utilisant Application Insights :

  1. Dans votre application de fonction, dans le menu sur la gauche, sélectionnez Application Insights. Sélectionnez ensuite Voir les données Application Insights.

    Screenshot of how to view application insights for a function app.

  2. Dans le menu sur la gauche, sélectionnez Métriques temps réel.

  3. Ouvrez un nouvel onglet. Dans votre Service Bus, sélectionnez Files d’attente dans le menu de gauche.

  4. Sélectionnez votre file d’attente.

  5. Dans le menu sur la gauche, sélectionnez Service Bus Explorer. Sous Envoyer, pour Type de contenu, choisissez Texte/brut. Entrez un message.

  6. Sélectionnez Envoyer pour envoyer un message.

    Screenshot of how to send Service Bus messages by using the portal.

  7. Sous l’onglet Métriques temps réel, vous devez voir que votre déclencheur de file d’attente Service bus a été activé. Si ce n’est pas le cas, renvoyez le message à partir de Service Bus Explorer.

    Screenshot of how to view messages by using live metrics for function apps.

Félicitations ! Vous avez testé avec succès la configuration de votre application de fonction avec des points de terminaison privés.

Comprendre les zones DNS privées

Vous avez utilisé un point de terminaison privé pour vous connecter aux ressources Azure. Vous vous connectez à une adresse IP privée au lieu du point de terminaison public. Les services Azure existants sont configurés afin d’utiliser un DNS existant pour se connecter au point de terminaison public. Vous devez remplacer la configuration DNS pour vous connecter au point de terminaison privé.

Une zone DNS privée est créée pour chaque ressource Azure configurée avec un point de terminaison privé. Un enregistrement DNS est créé pour chaque adresse IP privée associée au point de terminaison privé.

Les zones DNS suivantes ont été créées dans ce tutoriel :

  • privatelink.file.core.windows.net
  • privatelink.blob.core.windows.net
  • privatelink.servicebus.windows.net
  • privatelink.azurewebsites.net

Nettoyer les ressources

Au cours des étapes précédentes, vous avez créé des ressources Azure au sein d’un groupe de ressources. Si vous ne pensez pas avoir besoin de ces ressources à l’avenir, vous pouvez les supprimer en supprimant le groupe de ressources.

Dans le menu ou la page d’accueil du portail Azure, sélectionnez Groupes de ressources. Ensuite, dans la page Groupes de ressources, sélectionnez myResourceGroup.

Dans la page myResourceGroup, assurez-vous que les ressources répertoriées sont bien celles que vous souhaitez supprimer.

Sélectionnez Supprimer le groupe de ressources, tapez myResourceGroup dans la zone de texte pour confirmer, puis sélectionnez Supprimer.

Étapes suivantes

Dans ce tutoriel, vous avez créé une application de fonction Premium, un compte de stockage et un Service Bus. Vous avez sécurisé toutes ces ressources derrière des points de terminaison privés.

Utilisez les liens suivants pour en savoir plus sur les options de mise en réseau et les points de terminaison privés d’Azure Functions :