Partager via


Appeler Azure Functions à partir de workflows dans Azure Logic Apps

S’applique à : Azure Logic Apps (Consommation + Standard)

Pour exécuter du code qui effectue un travail spécifique dans votre workflow d’application logique, vous n’avez pas besoin de créer une application ni une infrastructure complète. Au lieu de cela, vous pouvez créer et appeler une fonction Azure. Azure Functions fournit de l’informatique Serverless dans le cloud et la possibilité d’effectuer les tâches suivantes :

  • Étendez le comportement de votre workflow en exécutant des fonctions créées à l’aide de Node.js ou C#.
  • Effectuez des calculs dans votre workflow.
  • Appliquez des champs de mise en forme ou de calcul avancés dans votre workflow.

Ce guide pratique montre comment appeler une fonction Azure existante à partir de votre workflow Consommation ou Standard. Pour exécuter du code sans utiliser Azure Functions, consultez la documentation suivante :

Limites

  • Seuls les workflows Consommation prennent en charge l’authentification des appels de fonction Azure à l’aide d’une identité managée avec l’authentification Microsoft Entra. Les workflows Standard ne sont actuellement pas pris en charge dans la section sur l’activation de l’authentification pour les appels de fonction.

  • Azure Logic Apps ne prend pas en charge l’utilisation d’Azure Functions avec les emplacements de déploiement activés. Bien que ce scénario puisse parfois fonctionner, ce comportement est imprévisible et peut entraîner des problèmes d’autorisation lorsque votre workflow tente d’appeler la fonction Azure.

Prérequis

  • Compte et abonnement Azure. Si vous n’avez pas encore d’abonnement, vous pouvez vous inscrire pour obtenir un compte Azure gratuitement.

  • Une ressource d’application de fonction Azure, qui contient une ou plusieurs fonctions Azure.

    • La ressource de votre application de fonction et la ressource de l’application logique doivent utiliser le même abonnement Azure.

    • Votre ressource d’application de fonction doit utiliser .NET ou Node.js comme pile d’exécution.

    • Lorsque vous ajoutez une nouvelle fonction à votre application de fonction, vous pouvez sélectionner C# ou JavaScript.

  • La fonction Azure que vous souhaitez appeler. Vous pouvez créer cette fonction à l’aide des outils suivants :

    • Azure portal

    • Visual Studio

    • Visual Studio Code

    • Azure CLI

    • Azure PowerShell

    • Modèle ARM

    • Votre fonction doit utiliser le modèle Déclencheur HTTP.

      Le modèle de déclencheur HTTP peut accepter du contenu ayant le type application/json à partir de votre workflow d’application logique. Quand vous ajoutez une fonction à votre workflow, le concepteur affiche des fonctions personnalisées qui sont créées à partir de ce modèle dans votre abonnement Azure.

    • Votre code de fonction doit inclure la réponse et la charge utile que vous souhaitez retourner à votre flux de travail une fois votre fonction terminée. L’objet context fait référence au message que votre flux de travail envoie via le paramètre d’action Azure Functions nommé Corps de la demande plus loin dans ce guide.

      Ce guide utilise l’exemple de fonction suivant, nommée FabrikamAzureFunction :

      module.exports = function (context, data) {
      
         var input = data;
      
         // Function processing logic
         // Function response for later use
         context.res = {
            body: {
              content:"Thank you for your feedback: " + input
            }
         };
         context.done();
      }
      

      Pour accéder aux propriétés de l’objet context depuis l’intérieur de votre fonction, utilisez la syntaxe suivante :

      context.body.<property-name>

      Par exemple, pour référencer la propriété content à l’intérieur de l’objet context, utilisez la syntaxe suivante :

      context.body.content

      Le code inclut également une variable input, qui stocke la valeur du paramètre data afin que votre fonction puisse effectuer des opérations sur cette valeur. À l’intérieur des fonctions JavaScript, la variable data est également un raccourci pour context.body.

      Remarque

      La propriété body s’applique ici à l’objet context. Ce n’est pas la même chose que le jeton Corps du résultat d’une action, que vous pouvez également transmettre à votre fonction.

    • Votre fonction ne peut pas utiliser de routes personnalisées à moins que vous n’ayez défini une définition OpenAPI.

      Lorsque vous avez une définition OpenAPI pour votre fonction, le Concepteur de workflow vous offre une meilleure expérience quand vous travaillez avec des paramètres de fonction. Pour que votre workflow puisse trouver les fonctions qui ont des définitions OpenAPI et y accéder, configurez votre application de fonction en suivant ces étapes.

  • Workflow d’application logique Consommation ou Standard qui commence par n’importe quel déclencheur.

    Les exemples de ce guide utilisent le déclencheur Office 365 Outlook nommé À la réception d’un e-mail.

  • Pour créer et appeler une fonction Azure qui appelle un autre workflow, assurez-vous que le workflow secondaire commence par un déclencheur qui fournit un point de terminaison pouvant être appelé.

    Par exemple, vous pouvez démarrer le workflow avec le HTTP ou le déclencheur de requête, ou utiliser un déclencheur basé sur un service, tel que Files d’attente Azure ou Event Grid. À partir de l’intérieur de votre fonction, envoyez une requête HTTP POST à l’URL du déclencheur et incluez la charge utile que vous souhaitez que votre workflow secondaire traite. Pour plus d’informations, consultez Appeler, déclencher ou imbriquer des workflows pour des applications logiques.

Conseils pour l’utilisation des fonctions Azure

Rechercher des fonctions avec des définitions OpenAPI

Pour configurer votre application de fonctions de manière à ce que votre flux de travail puisse trouver et utiliser des fonctions ayant des définitions OpenAPI, procédez comme suit :

  1. Ouvrez votre application de fonction dans le portail Azure. Vérifiez que l’application de fonction est en cours d’exécution.

  2. Dans votre application de fonction, configurez le Partage des ressources Cross-Origin (CORS) afin que toutes les origines soient autorisées en procédant comme suit :

    1. Dans le menu de l’application de fonction, sous API, sélectionnez CORS.

    2. Sous Origines autorisées, ajoutez le caractère générique astérisque (*), mais supprimez toutes les autres origines de la liste, puis sélectionnez Enregistrer.

      Capture d’écran montrant le portail Azure, le volet CORS et le caractère générique * entrés sous Origines autorisées.

Accéder aux valeurs de propriétés à l’intérieur des requêtes HTTP

Les fonctions basées sur Webhook peuvent accepter des requêtes HTTP en tant qu’entrées, et transmettre ces requêtes à d’autres fonctions. Par exemple, bien qu’Azure Logic Apps ait des fonctions qui convertissent les valeurs DateTime, cette exemple de fonction JavaScript de base montre comment accéder à une propriété à l’intérieur d’un objet de requête HTTP qui est passé à la fonction, et comment effectuer des opérations sur la valeur de cette propriété. Pour accéder aux propriétés à l’intérieur d’objets, cet exemple utilise l’opérateur point (.) :

function convertToDateString(request, response){
   var data = request.body;
   response = {
      body: data.date.ToDateString();
   }
}

Voici ce qui se passe à l’intérieur de cette fonction :

  1. La fonction crée une variable data, puis affecte l’objet body, qui se trouve à l’intérieur de l’objet request, à cette variable. La fonction utilise l’opérateur point (.) pour référencer l’objet body à l’intérieur de l’objet request :

    var data = request.body;
    
  2. La fonction peut maintenant accéder à la propriété date par le biais de la variable data, et convertir la valeur de propriété du type DateTime vers le type DateString en appelant la fonction ToDateString(). La fonction retourne également le résultat par le biais de la propriété body dans la réponse de la fonction :

    body: data.date.ToDateString();
    

Après avoir créé votre fonction dans Azure, suivez les étapes pour ajouter une fonction Azure à votre workflow.

Transmission de paramètres à une fonction

Si vous devez transmettre un paramètre d’URI à votre fonction, vous pouvez utiliser des paramètres de requête dans l’URL du point de terminaison de la fonction.

  1. Avec le concepteur de flux de travail ouvert pour votre application logique, et le volet d’informations de fonction s’ouvre, dans la liste des paramètres avancés, sélectionnez Requêtes.

    Une table s’affiche dans laquelle vous pouvez entrer une entrée de paramètre en tant que paires clé-valeur.

  2. Entrez la paire clé-valeur pour votre paramètre, par exemple :

    Capture d’écran montrant le volet d’informations de fonction avec le paramètre Requêtes et des exemples d’entrées clé-valeur.

Ajouter une fonction à votre workflow (Consommation + workflow Standard)

Pour appeler une fonction Azure à partir de votre workflow, vous pouvez ajouter ces fonctions comme n’importe quelle autre action dans le concepteur.

  1. Sur le portail Azure, ouvrez votre workflow d’application logique dans le concepteur.

  2. Dans le concepteur, suivez ces étapes générales pour ajouter l'action Azure Functions nommée Choisir une fonction Azure.

  3. Dans le volet Ajouter une action, procédez comme suit :

    1. Dans la liste des applications de fonction, sélectionnez votre application de fonction, sélectionnez la fonction, puis sélectionnez Ajouter une action, par exemple :

      Capture d’écran montrant le workflow Consommation avec une application de fonction et une fonction sélectionnées.

  4. Une fois la zone d’informations de la fonction affichée, procédez comme suit :

    1. Pour Corps de la demande, fournissez l’entrée de votre fonction, qui doit utiliser le format d’un objet JavaScript Object Notation (JSON), par exemple :

      {"context": <selected-input> }

      Cette entrée est la charge utile de l’objet de contexte ou le message que votre workflow envoie à votre fonction.

      • Pour sélectionner des jetons qui représentent les sorties des étapes précédentes, sélectionnez dans la zone Corps de la demande, puis sélectionnez l’option permettant d’ouvrir la liste de contenu dynamique (icône éclair).

      • Pour créer une expression, sélectionnez dans la zone Corps de la demande, puis sélectionnez l’option permettant d’ouvrir l’éditeur d’expression (icône de formule).

      L’exemple suivant spécifie un objet JSON avec l’attribut content et un jeton représentant la sortie À partir de du déclencheur de messagerie en tant que valeur du Corps de la demande :

      Capture d’écran montrant le workflow Consommation et une fonction avec un exemple de corps de requête pour la charge utile de l’objet de contexte.

      Ici, l’objet de contexte n’est pas converti sous forme de chaîne. Le contenu de l’objet est donc ajouté directement à la charge utile JSON. Voici l’exemple complet :

      Capture d’écran montrant le workflow Consommation et une fonction avec un exemple complet de corps de requête pour la charge utile de l’objet de contexte.

      Si vous fournissez un objet de contexte autre qu’un jeton JSON qui transmet une chaîne, un objet JSON ou un tableau JSON, vous obtenez une erreur. Toutefois, vous pouvez convertir l’objet de contexte en tant que chaîne en plaçant le jeton entre guillemets (« »), par exemple, si vous souhaitez utiliser le jeton Heure de réception :

      Capture d’écran montrant le workflow Consommation et un exemple de corps de requête qui convertit l’objet de contexte en tant que chaîne.

    2. Pour spécifier d’autres détails comme la méthode à utiliser, les en-têtes de demande, les paramètres de requête ou l’authentification, ouvrez la liste Paramètres avancés, puis sélectionnez les paramètres souhaités. Pour l’authentification, vos options varient selon la fonction sélectionnée. Pour plus d’informations, consultez Activer l’authentification pour les fonctions.

Activer l’authentification pour les appels de fonction Azure (workflows Consommation uniquement)

Votre workflow Consommation peut utiliser une identité managée pour authentifier un appel de fonction Azure et accéder aux ressources protégées par Microsoft Entra ID. L’identité managée peut authentifier l’accès sans avoir à se connecter et à fournir des informations d’identification ou des secrets. Azure gère cette identité pour vous et vous aide à sécuriser vos informations d’identification, car vous n’êtes pas obligé de fournir ni de faire pivoter des secrets. Vous pouvez configurer l’identité attribuée par le système ou une identité créée manuellement et attribuée par l’utilisateur au niveau de ressource d’application logique. La fonction Azure appelée à partir de votre workflow peut utiliser la même identité managée pour l’authentification.

Remarque

Seuls les workflows Consommation prennent en charge l’authentification pour un appel de fonction Azure à l’aide d’une identité managée et d’une authentification Microsoft Entra. Actuellement, les workflow Standard n’incluent pas cette prise en charge lorsque vous utilisez l’action pour appeler une fonction Azure.

Pour plus d’informations, consultez la documentation suivante :

Pour configurer votre application de fonction et la fonction pour qu’elles puissent utiliser l’identité managée de votre application logique Consommation, suivez cette procédure générale :

  1. Activez et configurez l’identité managée de votre application logique.

  2. Configurez l’authentification anonyme dans votre fonction.

  3. Rechercher les valeurs nécessaires pour configurer l’authentification Microsoft Entra.

  4. Créez une inscription d’application pour votre application de fonction.

Configurer l’authentification anonyme dans votre fonction (workflow Consommation uniquement)

Pour que votre fonction utilise l’identité managée de votre application logique Consommation, vous devez définir le niveau d’authentification de votre fonction sur anonymous. Dans le cas contraire, votre workflow génère une erreur BadRequest.

  1. Dans le portail Azure, recherchez et sélectionnez votre application de fonction.

    Les étapes suivantes utilisent un exemple d’application de fonction nommé FabrikamFunctionApp.

  2. Dans le menu de ressource d’application de fonction, sous Outils de développement, sélectionnez Outils avancés>Accéder.

    Capture d’écran montrant le menu de l’application de fonction avec les options sélectionnées pour « Outils avancés » et « Go ».

  3. Une fois la page Kudu Plus ouverte, dans le menu Console de débogage de la barre de titre du site web Kudu, sélectionnez CMD.

    Capture d’écran montrant la page Kudu Services avec le menu Console de débogage ouvert et l’option sélectionnée nommée CMD.

  4. Une fois la page suivante affichée, dans la liste des dossiers, sélectionnez site>wwwroot>votre-fonction.

    Les étapes suivantes utilisent un exemple de fonction nommé FabrikamAzureFunction.

    Capture d’écran montrant la liste des dossiers ouverts pour le site, wwwroot et votre fonction.

  5. Ouvrez le fichier function.json pour le modifier.

    Capture d’écran montrant le fichier function.json avec la commande d’édition sélectionnée.

  6. Dans l’objet bindings , vérifiez si la propriété authLevel existe. Si la propriété existe, définissez sa valeur sur anonymous. Sinon, ajoutez cette propriété et définissez sa valeur.

    Capture d’écran montrant l’objet « bindings » avec la propriété authLevel définie sur anonyme.

  7. Lorsque vous avez terminé, enregistrez vos paramètres. Passez à la section suivante.

Rechercher les valeurs nécessaires pour configurer l’authentification Microsoft Entra (workflows Consommation uniquement)

Avant de pouvoir configurer votre application de fonction de façon à utiliser l’identité managée et l’authentification Microsoft Entra, vous devez rechercher et enregistrer les valeurs suivantes en suivant les étapes de cette section.

  1. Recherchez l’ID de locataire de votre locataire Microsoft Entra.

  2. Recherchez l’ID d’objet de votre identité managée.

  3. Recherchez l’ID d’application pour l’application Entreprise associée à votre identité managée.

Rechercher l’ID de locataire de votre locataire Microsoft Entra

Exécutez la commande PowerShell Get-AzureAccount ou, dans le portail Azure, procédez comme suit :

  1. Dans le Portail Azure, ouvrez votre tenant Microsoft Entra ID.

    Ce guide utilise Fabrikam comme exemple de locataire.

  2. Dans le menu du locataire, sélectionnez Vue d’ensemble.

  3. Copiez et enregistrez votre ID de locataire pour une utilisation ultérieure, par exemple :

    Capture d’écran montrant la page « Propriétés » de Microsoft Entra ID avec le bouton de copie de l’ID de locataire sélectionné.

Rechercher l’ID d’objet de votre identité managée

Après avoir activé l’identité managée pour votre ressource d’application logique Consommation, recherchez l’objet de votre identité managée. Vous utiliserez cet ID pour rechercher l’application Entreprise associée dans votre locataire Microsoft Entra.

  1. Dans le menu d’application logique, sous Paramètres, sélectionnez Identité, puis Attribuée par le système ou Attribuée par l' utilisateur.

    • Attribuée par le système

      Copiez l’ID d’objet (principal) de l’identité :

      La capture d'écran montre la page d'identité de l'application logique Consommation avec l’onglet sélectionné nommé « Attribué par le système ».

    • Attribuée par l'utilisateur

      1. Sélectionnez l’identité :

        La capture d'écran montre la page d'identité de l'application logique Consommation avec l’onglet sélectionné nommé « Attribué par l’utilisateur ».

      2. Copiez l’ID d’objet (principal) de l’identité :

        Capture d’écran montrant la page Vue d’ensemble de l’identité affectée par l’utilisateur de l’application logique Consommation avec l’ID de l’objet (principal) sélectionné.

Rechercher l’ID d’application pour l’application Azure Enterprise associée à votre identité managée

Lorsque vous activez une identité managée sur votre ressource d’application logique, Azure crée automatiquement une application Azure Enterprise associée qui porte le même nom. Vous devez maintenant rechercher l’application Entreprise associée et copier son ID d’application. Plus tard, vous utilisez cet ID d’application pour ajouter un fournisseur d’identité pour votre application de fonction en créant une inscription d’application.

  1. Dans le portail Azure, recherchez et ouvrez votre locataire Microsoft Entra.

  2. Dans le menu de locataire, sous Gérer, sélectionnez Applications d’entreprise.

  3. Dans la page Toutes les applications, dans la zone de recherche, entrez l’ID d’objet de votre identité managée. Dans les résultats, recherchez l’application d’entreprise correspondante et copiez l’ID d’application :

    Capture d’écran montrant la page client Microsoft Entra nommée Toutes les applications, avec l’ID d’objet d’application d’entreprise dans la zone de recherche et l’ID d’application correspondant sélectionné.

  4. Utilisez maintenant l’ID d’application copié pour ajouter un fournisseur d’identité à votre application de fonction.

Ajouter un fournisseur d’identité pour votre application de fonction (workflow Consommation uniquement)

Maintenant que vous disposez de l’ID de locataire et de l’ID d’application, vous pouvez configurer votre application de fonction pour utiliser l’authentification Microsoft Entra en ajoutant un fournisseur d’identité et en créant une inscription d’application.

  1. Ouvrez votre application de fonction dans le portail Azure.

  2. Dans le menu de l’application de fonction, sous Paramètres, sélectionnez Authentification, puis sélectionnez Ajouter un fournisseur d'identité.

    Capture d’écran montrant le menu de l’application de fonction avec la page Authentification et l’option sélectionnée nommée Ajouter un fournisseur d’identité.

  3. Dans le volet Ajouter un fournisseur d’identité, sous Concepts de base, dans la liste Fournisseur d’identité, sélectionnez Microsoft.

  4. Sous Inscription d’application, pour Type d’inscription d’application, sélectionnez Fournir les détails d’une inscription d’application existante, puis entrez les valeurs que vous avez enregistrées précédemment.

    Propriété Obligatoire Value Description
    ID d’application (client) Oui <application-ID> Identificateur unique à utiliser pour l’inscription de cette application. Pour cet exemple, utilisez l’identifiant d’application que vous avez copié pour l’application Entreprise associée à votre identité managée.
    Clè secrète client Facultatif, mais recommandé <client-secret> Valeur secrète utilisée par l’application pour prouver son identité lors de la demande d’un jeton. La clé secrète client est créée et stockée dans la configuration de votre application sous la forme d’un paramètre d’application à emplacement fixé nommé MICROSOFT_PROVIDER_AUTHENTICATION_SECRET.

    – Veillez à faire pivoter régulièrement les secrets et à les stocker de manière sécurisée. Par exemple, gérez vos secrets dans Azure Key Vault où vous pouvez utiliser une identité managée pour récupérer la clé sans exposer la valeur à un utilisateur non autorisé. Vous pouvez mettre à jour ce paramètre pour utiliser des références Key Vault.

    - Si vous fournissez une valeur de clé secrète client, les opérations de connexion utilisent le flux hybride, en retournant à la fois les jetons d’accès et d’actualisation.

    – Si vous ne fournissez pas de clé secrète client, les opérations de connexion utilisent le flux d’octroi implicite OAuth 2.0. Cette méthode retourne directement un jeton d’accès ou jeton d’ID uniquement. Ces jetons sont envoyés par le fournisseur et stockés dans le magasin de jetons EasyAuth.

    Important : en raison des risques de sécurité, le flux d’octroi implicite n’est plus une méthode d’authentification appropriée. Utilisez à la place un flux de code d’autorisation avec PKCE (Proof Key for Code Exchange) ou des codes d’autorisation d’application monopage (SPA).
    URL de l’émetteur Non <authentication-endpoint-URL>/<Microsoft-Entra-tenant-ID>/v2.0 Cette URL sert à rediriger les utilisateurs vers le bon tenant Microsoft Entra, mais aussi à télécharger les métadonnées appropriées pour déterminer les clés de signature de jetons et la valeur de revendication de l’émetteur de jeton qui conviennent. Pour les applications qui utilisent Azure AD v1, omettez /v2.0 dans l’URL.

    Pour ce scénario, utilisez l’URL suivante : https://sts.windows.net/<Microsoft-Entra-tenant-ID>
    Audiences de jeton autorisées Non <URI d’ID d’application> URI d’ID d’application (ID de ressource) pour l’application de fonction. Pour une application cloud ou serveur, si vous souhaitez autoriser les jetons d’authentification d’une application web, ajoutez l’URI d’ID d’application de l’application web ici. L’ID client configuré est toujours implicitement considéré comme une audience autorisée.

    Pour ce scénario, la valeur est https://management.azure.com. Plus tard, vous pouvez utiliser le même URI dans la propriété Audience lorsque vous configurez votre action de fonction dans votre workflow pour utiliser l’identité managée.

    Important : l’URI de l’ID d’application (ID de la ressource) doit correspondre exactement à la valeur qu’attend Microsoft Entra ID, notamment les barres obliques de fin obligatoires.

    À ce stade, votre version ressemble à l’exemple suivant :

    Capture d’écran montrant l’inscription d’application pour votre application logique et votre fournisseur d’identité pour votre application de fonction.

    Si vous configurez votre application de fonction avec un fournisseur d’identité pour la première fois, la section Paramètres d’authentification App Service s’affiche également. Ces options déterminent la façon dont votre application de fonction répond aux demandes non authentifiées. La sélection par défaut redirige toutes les demandes de connexion avec le nouveau fournisseur d’identité. Vous pouvez personnaliser ce comportement maintenant ou ajuster ces paramètres ultérieurement à partir de la page Authentification principale en sélectionnant Modifier en regard de Paramètres d’authentification. Pour en savoir plus sur ces options, consultez Flux d’authentification du flux - Authentification et autorisation dans Azure App Service et Azure Functions.

    Dans le cas contraire, vous pouvez passer à l’étape suivante.

  5. Pour terminer la création de l’inscription de l’application, sélectionnez Ajouter.

    Lorsque vous avez terminé, la page Authentification répertorie désormais le fournisseur d’identité et l’identifiant d’application (client) de l’inscription d’application. Votre application de fonction peut maintenant utiliser cette inscription d’application pour l’authentification.

  6. Copiez l’identifiant d’application (client) de l’enregistrement pour l’utiliser ultérieurement dans la propriété Audience de l’action Azure Functions pour votre workflow.

    Capture d’écran montrant le nouveau fournisseur d’identité pour l’application de fonction.

  7. Revenez au concepteur et suivez la procédure d’authentification de l’accès avec l’identité managée à l’aide de l’action intégrée Azure Functions.

Étapes suivantes