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 :
- Exécuter des extraits de code dans des workflows
- Créer et exécuter du code .NET Framework à partir de workflows Standard
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 :
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’objetcontext
, utilisez la syntaxe suivante :context.body.content
Le code inclut également une variable
input
, qui stocke la valeur du paramètredata
afin que votre fonction puisse effectuer des opérations sur cette valeur. À l’intérieur des fonctions JavaScript, la variabledata
est également un raccourci pourcontext.body
.Remarque
La propriété
body
s’applique ici à l’objetcontext
. 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 :
Ouvrez votre application de fonction dans le portail Azure. Vérifiez que l’application de fonction est en cours d’exécution.
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 :
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 :
La fonction crée une variable
data
, puis affecte l’objetbody
, qui se trouve à l’intérieur de l’objetrequest
, à cette variable. La fonction utilise l’opérateur point (.) pour référencer l’objetbody
à l’intérieur de l’objetrequest
:var data = request.body;
La fonction peut maintenant accéder à la propriété
date
par le biais de la variabledata
, et convertir la valeur de propriété du type DateTime vers le type DateString en appelant la fonctionToDateString()
. 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.
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.
Entrez la paire clé-valeur pour votre paramètre, par exemple :
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.
Sur le portail Azure, ouvrez votre workflow d’application logique dans le concepteur.
Dans le concepteur, suivez ces étapes générales pour ajouter l'action Azure Functions nommée Choisir une fonction Azure.
Dans le volet Ajouter une action, procédez comme suit :
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 :
Une fois la zone d’informations de la fonction affichée, procédez comme suit :
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 :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 :
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 :
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 :
Activez et configurez l’identité managée de votre application logique.
Rechercher les valeurs nécessaires pour configurer l’authentification Microsoft Entra.
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.
Dans le portail Azure, recherchez et sélectionnez votre application de fonction.
Les étapes suivantes utilisent un exemple d’application de fonction nommé FabrikamFunctionApp.
Dans le menu de ressource d’application de fonction, sous Outils de développement, sélectionnez Outils avancés>Accéder.
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.
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.
Ouvrez le fichier function.json pour le modifier.
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.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.
Recherchez l’ID de locataire de votre locataire Microsoft Entra.
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 :
Dans le Portail Azure, ouvrez votre tenant Microsoft Entra ID.
Ce guide utilise Fabrikam comme exemple de locataire.
Dans le menu du locataire, sélectionnez Vue d’ensemble.
Copiez et enregistrez votre ID de locataire pour une utilisation ultérieure, par exemple :
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.
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.
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.
Dans le portail Azure, recherchez et ouvrez votre locataire Microsoft Entra.
Dans le menu de locataire, sous Gérer, sélectionnez Applications d’entreprise.
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 :
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.
Ouvrez votre application de fonction dans le portail Azure.
Dans le menu de l’application de fonction, sous Paramètres, sélectionnez Authentification, puis sélectionnez Ajouter un fournisseur d'identité.
Dans le volet Ajouter un fournisseur d’identité, sous Concepts de base, dans la liste Fournisseur d’identité, sélectionnez Microsoft.
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 esthttps://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 :
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.
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.
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.
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.