Appeler des fonctions Azure à partir d’Azure Logic AppsCall Azure functions from Azure Logic Apps

Quand vous voulez exécuter du code qui effectue une tâche spécifique dans vos applications logiques, vous pouvez créer votre propre fonction à l’aide d’Azure Functions.When you want to run code that performs a specific job in your logic apps, you can create your own function by using Azure Functions. Ce service vous permet de créer des fonctions Node.js, C# et F# pour ne pas avoir à générer une application ou une infrastructure complète en vue d’exécuter votre code.This service helps you create Node.js, C#, and F# functions so you don't have to build a complete app or infrastructure to run code. Vous pouvez également appeler des applications logiques à l’intérieur de fonctions Azure.You can also call logic apps from inside Azure functions. Azure Functions fournit une informatique sans serveur dans le cloud et est utile pour effectuer des tâches telles que les suivantes :Azure Functions provides serverless computing in the cloud and is useful for performing tasks such as these examples:

  • Étendre le comportement de votre application logique avec des fonctions dans Node.js ou C#Extend your logic app's behavior with functions in Node.js or C#.
  • Effectuer des calculs dans le workflow de votre application logiquePerform calculations in your logic app workflow.
  • Appliquer une mise en forme avancée ou calculer des champs dans vos applications logiquesApply advanced formatting or compute fields in your logic apps.

Pour exécuter des extraits de code sans créer de fonctions Azure, découvrez comment ajouter et exécuter du code inline.To run code snippets without creating Azure functions, learn how to add and run inline code.

Notes

L’intégration entre Logic Apps et Azure Functions ne fonctionne actuellement pas avec l’option Emplacements activée.Integration between Logic Apps and Azure Functions currently doesn't work with Slots enabled.

PrérequisPrerequisites

  • Un abonnement Azure.An Azure subscription. Si vous n’avez pas d’abonnement Azure, inscrivez-vous pour bénéficier d’un compte Azure gratuit.If you don't have an Azure subscription, sign up for a free Azure account.

  • Une application de fonction Azure, qui est un conteneur pour les fonctions Azure, ainsi que votre fonction Azure.An Azure function app, which is a container for Azure functions, along with your Azure function. Si vous n’avez pas d’application de fonction, créez-la en premier lieu.If you don't have a function app, create your function app first. Vous pouvez ensuite créer votre fonction soit à l’extérieur de votre application logique dans le portail Azure, soit à partir de votre application logique dans le Concepteur d’application logique.You can then create your function either outside your logic app in the Azure portal, or from inside your logic app in the Logic App Designer.

  • Quand vous travaillez avec des applications logiques, les mêmes exigences s’appliquent aux applications de fonctions et aux fonctions, qu’elles soient nouvelles ou pas :When working with logic apps, the same requirements apply to function apps and functions whether they are existing or new:

    • Votre application de fonction et votre application logique doivent utiliser le même abonnement Azure.Your function app and logic app must use the same Azure subscription.

    • Les nouvelles applications de fonction doivent utiliser le .NET ou JavaScript comme pile d’exécution.New function apps must use either the .NET or JavaScript as the runtime stack. Quand vous ajoutez une nouvelle fonction à des applications de fonction existantes, vous pouvez sélectionner C# ou JavaScript.When you add a new function to existing function apps, you can select either C# or JavaScript.

    • Votre fonction utilise le modèle Déclencheur HTTP.Your function uses the HTTP trigger template.

      Le modèle de déclencheur HTTP peut accepter du contenu ayant le type application/json à partir de votre application logique.The HTTP trigger template can accept content that has application/json type from your logic app. Quand vous ajoutez une fonction Azure à votre application logique, le Concepteur d’application logique affiche des fonctions personnalisées qui sont créées à partir de ce modèle dans votre abonnement Azure.When you add an Azure function to your logic app, the Logic App Designer shows custom functions that are created from this template within your Azure subscription.

    • Votre fonction n’utilise pas de routes personnalisées, sauf si vous avez défini une définition OpenAPI (anciennement appelée fichier Swagger).Your function doesn't use custom routes unless you've defined an OpenAPI definition (formerly known as a Swagger file).

    • Si vous avez une définition OpenAPI pour votre fonction, le Concepteur Logic Apps vous offre une meilleure expérience quand vous travaillez avec des paramètres de fonction.If you have an OpenAPI definition for your function, the Logic Apps Designer gives you a richer experience when your work with function parameters. Pour que votre application logique puisse trouver les fonctions qui ont des définitions OpenAPI et y accéder, configurez votre application de fonction en suivant ces étapes.Before your logic app can find and access functions that have OpenAPI definitions, set up your function app by following these steps.

  • L’application logique dans laquelle vous souhaitez ajouter la fonction, y compris un déclencheur comme première étape de votre application logiqueThe logic app where you want to add the function, including a trigger as the first step in your logic app

    Pour que vous puissiez ajouter des actions qui exécutent des fonctions, votre application logique doit démarrer avec un déclencheur.Before you can add actions that run functions, your logic app must start with a trigger. Si vous débutez avec les applications logiques, consultez Qu’est-ce qu’Azure Logic Apps ? et Démarrage rapide : Créer votre première application logique.If you're new to logic apps, review What is Azure Logic Apps and Quickstart: Create your first logic app.

Rechercher des fonctions qui ont des descriptions OpenAPIFind functions that have OpenAPI descriptions

Pour bénéficier d’une expérience plus complète quand vous travaillez avec des paramètres de fonction dans le Concepteur Logic Apps, générez une définition OpenAPI (anciennement fichier Swagger) pour votre fonction.For a richer experience when you work with function parameters in the Logic Apps Designer, generate an OpenAPI definition, formerly known as a Swagger file, for your function. Pour configurer votre application de fonction afin que votre application logique puisse trouver les fonctions qui ont des descriptions Swagger et y accéder, procédez comme suit :To set up your function app so your logic app can find and use functions that have Swagger descriptions, follow these steps:

  1. Vérifiez que votre application de fonction est en cours d’exécution.Make sure that your function app is actively running.

  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 :In your function app, set up Cross-Origin Resource Sharing (CORS) so that all origins are permitted by following these steps:

    1. Dans la liste Applications de fonction, sélectionnez votre application de fonction.From the Function Apps list, select your function app. Dans le volet de droite, sélectionnez Fonctionnalités de la plateforme > CORS.In the right-hand pane, select Platform features > CORS.

      Sélectionnez votre application de fonction > « Fonctionnalités de la plateforme » > « CORS »

    2. Sous CORS, ajoutez le caractère générique * (astérisque), mais supprimez toutes les autres origines de la liste, puis choisissez Enregistrer.Under CORS, add the asterisk (*) wildcard character, but remove all the other origins in the list, and choose Save.

      Définir CORS* sur le caractère générique « * »

Accéder aux valeurs de propriétés à l’intérieur des requêtes HTTPAccess property values inside HTTP requests

Les fonctions webhook peuvent accepter des requêtes HTTP en tant qu’entrées, et transmettre ces requêtes à d’autres fonctions.Webhook functions can accept HTTP requests as inputs and pass those requests to other functions. Par exemple, bien que 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 qui est passé à la fonction, et comment effectuer des opérations sur la valeur de cette propriété.For example, although Logic Apps has functions that convert DateTime values, this basic sample JavaScript function shows how you can access a property inside a request object that's passed to the function and perform operations on that property value. Pour accéder aux propriétés à l’intérieur d’objets, cet exemple utilise l’opérateur point (.) :To access properties inside objects, this example uses the dot (.) operator:

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

Voici ce qui se passe à l’intérieur de cette fonction :Here's what happens inside this function:

  1. La fonction crée une variable data et assigne l’objet body à l’intérieur de l’objet request à cette variable.The function creates a data variable and assigns the body object inside the request object to that variable. La fonction utilise l’opérateur point (.) pour référencer l’objet body à l’intérieur de l’objet request :The function uses the dot (.) operator to reference the body object inside the request object:

    var data = request.body;
    
  2. La fonction peut maintenant accéder à la propriété date par le biais de la variable data, et convertir cette valeur de propriété du type DateTime vers le type DateString en appelant la fonction ToDateString().The function can now access the date property through the data variable, and convert that property value from DateTime type to DateString type by calling the ToDateString() function. La fonction retourne également le résultat par le biais de la propriété body dans la réponse de la fonction :The function also returns the result through the body property in the function's response:

    body: data.date.ToDateString();
    

Maintenant que vous avez créé votre fonction Azure, suivez les étapes pour découvrir comment ajouter des fonctions à des applications logiques.Now that you've created your Azure function, follow the steps for how to add functions to logic apps.

Créer des fonctions au sein d’applications logiquesCreate functions inside logic apps

Avant de pouvoir créer une fonction Azure à partir de votre application logique à l’aide du Concepteur d’application logique, vous devez d’abord disposer d’une application de fonction Azure, qui est un conteneur pour vos fonctions.Before you can create an Azure function starting from inside your logic app by using the Logic App Designer, you must first have an Azure function app, which is a container for your functions. Si vous n’avez pas d’application de fonction, créez-la en premier lieu.If you don't have a function app, create that function app first. Voir Créer votre première fonction à l’aide du portail Azure.See Create your first function in the Azure portal.

  1. Dans le portail Azure, ouvrez votre application logique dans le Concepteur d’applications logiques.In the Azure portal, open your logic app in the Logic App Designer.

  2. Pour créer et ajouter votre fonction, suivez l’étape qui s’applique à votre scénario :To create and add your function, follow the step that applies to your scenario:

    • Sous la dernière étape du flux de travail de votre application logique, choisissez Nouvelle étape.Under the last step in your logic app's workflow, choose New step.

    • Entre les étapes existantes du flux de travail de votre application logique, déplacez votre souris sur la flèche, cliquez sur le signe plus (+), puis sélectionnez Ajouter une action.Between existing steps in your logic app's workflow, move your mouse over the arrow, choose the plus (+) sign, and then select Add an action.

  3. Dans la zone de recherche, entrez le filtre « azure functions ».In the search box, enter "azure functions" as your filter. Dans la liste des actions, sélectionnez cette action : Choisissez une fonction Azure - Azure FunctionsFrom the actions list, select this action: Choose an Azure function - Azure Functions

    Recherchez « Azure Functions »

  4. Dans la liste d’applications de fonction, sélectionnez la vôtre.From the function apps list, select your function app. Une fois la liste des actions ouverte, sélectionnez cette action : Azure Functions - Créer une nouvelle fonctionAfter the actions list opens, select this action: Azure Functions - Create New Function

    Sélectionnez votre application de fonction

  5. Dans l’éditeur de définition de fonction, définissez votre fonction :In the function definition editor, define your function:

    1. Dans la zone Nom de la fonction, fournissez un nom pour votre fonction.In the Function name box, provide a name for your function.

    2. Dans la zone Code, ajoutez votre code au modèle de fonction, notamment la réponse et la charge utile qui doivent être retournées à votre application logique une fois l’exécution de votre fonction terminée.In the Code box, add your code to the function template, including the response and payload that you want returned to your logic app after your function finishes running.

      Définissez votre fonction

      Dans le code du modèle, context l’objet fait référence au message envoyé par votre application logique via le champ Corps de la demande au cours d’une étape ultérieure.In the template's code, the context object refers to the message that your logic app sends through the Request Body field in a later step. Pour accéder aux propriétés de l’objet context depuis l’intérieur de votre fonction, utilisez la syntaxe suivante :To access the context object's properties from inside your function, use this syntax:

      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 :For example, to reference the content property inside the context object, use this syntax:

      context.body.content

      Le code du modèle 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.The template code also includes an input variable, which stores the value from the data parameter so your function can perform operations on that value. À l’intérieur des fonctions JavaScript, la variable data est également un raccourci pour context.body.Inside JavaScript functions, the data variable is also a shortcut for context.body.

      Notes

      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.The body property here applies to the context object and isn't the same as the Body token from an action's output, which you might also pass to your function.

    3. Lorsque vous êtes prêt, choisissez Créer.When you're done, choose Create.

  6. Dans la zone Corps de la demande, spécifiez l’entrée de votre fonction, qui doit être au format JSON (JavaScript Objet Notation).In the Request Body box, provide your function's input, which must be formatted as a JavaScript Object Notation (JSON) object.

    Cette entrée est l’objet de contexte ou le message que votre application logique envoie à votre fonction.This input is the context object or message that your logic app sends to your function. Quand vous cliquez dans le champ Corps de la demande, la liste de contenu dynamique s’ouvre afin que vous puissiez sélectionner des jetons pour les sorties issues des étapes précédentes.When you click in the Request Body field, the dynamic content list appears so you can select tokens for outputs from previous steps. Cet exemple indique que la charge utile du contexte contient une propriété nommée content qui a la valeur du jeton De à partir du déclencheur d’e-mail :This example specifies that the context payload contains a property named content that has the From token's value from the email trigger:

    Exemple « Corps de la demande » : charge utile d’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.Here, the context object isn't cast as a string, so the object's content gets added directly to the JSON payload. Toutefois, lorsque l’objet de contexte n’est pas un jeton JSON qui renvoie une chaîne, un objet JSON ou un tableau JSON, une erreur se produit.However, when the context object isn't a JSON token that passes a string, a JSON object, or a JSON array, you get an error. Par conséquent, en utilisant à la place le jeton Heure de réception, vous pouvez convertir l’objet de contexte sous forme de chaîne en ajoutant des guillemets doubles :So, if this example used the Received Time token instead, you can cast the context object as a string by adding double-quotation marks:

    Caster un objet en tant que chaîne

  7. Pour spécifier d’autres détails comme la méthode à utiliser, les en-têtes de demande ou les paramètres de requête, ouvrez la liste Ajouter un nouveau paramètre, puis sélectionnez les options souhaitées.To specify other details such as the method to use, request headers, or query parameters, open the Add new parameter list, and select the options that you want.

Ajouter des fonctions existantes à des applications logiquesAdd existing functions to logic apps

Pour appeler des fonctions Azure existantes à partir de vos applications logiques, vous pouvez ajouter des fonctions Azure comme toute autre action dans le Concepteur d’applications logiques.To call existing Azure functions from your logic apps, you can add Azure functions like any other action in the Logic App Designer.

  1. Dans le portail Azure, ouvrez votre application logique dans le Concepteur d’applications logiques.In the Azure portal, open your logic app in the Logic App Designer.

  2. Sous l’étape où vous souhaitez ajouter la fonction, choisissez Nouvelle étape, puis sélectionnez Ajouter une action.Under the step where you want to add the function, choose New step, and select Add an action.

  3. Dans la zone de recherche, entrez le filtre « azure functions ».In the search box, enter "azure functions" as your filter. Dans la liste des actions, sélectionnez cette action : Choisissez une fonction Azure - Azure FunctionsFrom the actions list, select this action: Choose an Azure function - Azure Functions

    Recherchez « Azure Functions »

  4. Dans la liste d’applications de fonction, sélectionnez la vôtre.From the function apps list, select your function app. Une fois la liste de fonctions affichée, sélectionnez votre fonction.After the functions list appears, select your function.

    Sélectionnez votre application de fonction et votre fonction Azure

    Pour les fonctions qui ont des définitions d’API (description Swagger) et qui sont configurées pour que votre application logique puisse rechercher ces fonctions et y accéder, vous pouvez sélectionner Actions Swagger :For functions that have API definitions (Swagger descriptions) and are set up so your logic app can find and access those functions, you can select Swagger actions:

    Sélectionnez votre application de fonction, « Actions Swagger » et votre fonction Azure

  5. Dans la zone Corps de la demande, spécifiez l’entrée de votre fonction, qui doit être au format JSON (JavaScript Objet Notation).In the Request Body box, provide your function's input, which must be formatted as a JavaScript Object Notation (JSON) object.

    Cette entrée est l’objet de contexte ou le message que votre application logique envoie à votre fonction.This input is the context object or message that your logic app sends to your function. Quand vous cliquez dans le champ Corps de la demande, la liste de contenu dynamique s’affiche afin que vous puissiez sélectionner des jetons pour les sorties des étapes précédentes.When you click in the Request Body field, the dynamic content list appears so that you can select tokens for outputs from previous steps. Cet exemple indique que la charge utile du contexte contient une propriété nommée content qui a la valeur du jeton De à partir du déclencheur d’e-mail :This example specifies that the context payload contains a property named content that has the From token's value from the email trigger:

    Exemple « Corps de la demande » : charge utile d’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.Here, the context object isn't cast as a string, so the object's content gets added directly to the JSON payload. Toutefois, lorsque l’objet de contexte n’est pas un jeton JSON qui renvoie une chaîne, un objet JSON ou un tableau JSON, une erreur se produit.However, when the context object isn't a JSON token that passes a string, a JSON object, or a JSON array, you get an error. Par conséquent, en utilisant à la place le jeton Heure de réception, vous pouvez convertir l’objet de contexte sous forme de chaîne en ajoutant des guillemets doubles :So, if this example used the Received Time token instead, you can cast the context object as a string by adding double-quotation marks:

    Caster un objet en tant que chaîne

  6. Pour spécifier d’autres détails comme la méthode à utiliser, les en-têtes de demande ou les paramètres de requête, ouvrez la liste Ajouter un nouveau paramètre, puis sélectionnez les options souhaitées.To specify other details such as the method to use, request headers, or query parameters, open the Add new parameter list, and select the options that you want.

Appeler des applications logiques à partir de fonctions AzureCall logic apps from Azure functions

Pour déclencher une application logique à partir d’une fonction Azure, l’application logique doit démarrer avec un déclencheur fournissant un point de terminaison pouvant être appelé.When you want to trigger a logic app from inside an Azure function, the logic app must start with a trigger that provides a callable endpoint. Par exemple, vous pouvez démarrer l’application logique avec le déclencheur HTTP, Requête, Files d’attente Azure ou Event Grid.For example, you can start the logic app with the HTTP, Request, Azure Queues, or Event Grid trigger. À 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 cette application logique doit traiter.Inside your function, send an HTTP POST request to the trigger's URL, and include the payload you want that logic app to process. Pour plus d’informations, consultez Appeler, déclencher ou imbriquer des applications logiques.For more information, see Call, trigger, or nest logic apps.

Étapes suivantesNext steps