Skapa och köra kod från arbetsflöden i Azure Logic Apps med hjälp av Azure Functions

Gäller för: Azure Logic Apps (Förbrukning + Standard)

När du vill köra kod som utför ett visst jobb i logikappens arbetsflöde kan du skapa en funktion med hjälp av Azure Functions. Den här tjänsten hjälper dig skapa funktioner i Node.js, C# och F# så att du inte behöver skapa en komplett app eller infrastruktur för att köra kod. Azure Functions tillhandahåller serverlös databehandling i molnet och är användbart för att utföra vissa uppgifter, till exempel:

  • Utöka logikappens beteende med funktioner i Node.js eller C#.
  • Utför beräkningar i logikappens arbetsflöde.
  • Använd avancerade formaterings- eller beräkningsfält i logikappens arbetsflöden.

Den här instruktionsguiden visar hur du anropar en Azure-funktion från ett logikapparbetsflöde. Om du vill köra kodfragment utan att använda Azure Functions läser du Lägg till och kör infogad kod. Om du vill anropa och utlösa ett logikapparbetsflöde inifrån en funktion måste arbetsflödet börja med en utlösare som tillhandahåller en anropsbar slutpunkt. Du kan till exempel starta arbetsflödet med utlösaren HTTP, Request, Azure Queues eller Event Grid . I funktionen skickar du en HTTP POST-begäran till utlösarens URL och inkluderar den nyttolast som du vill att arbetsflödet ska bearbeta. Mer information finns i Arbetsflöden för samtal, utlösare eller kapslingslogikapp.

Begränsningar

  • Du kan skapa en funktion direkt inifrån ett arbetsflöde för förbrukningslogikapp, men inte från ett standardarbetsflöde för logikappar. Du kan dock skapa funktioner på andra sätt. Mer information finns i Skapa funktioner inifrån logikappens arbetsflöden.

  • Endast förbrukningsarbetsflöden stöder autentisering av Azure-funktionsanrop med hjälp av en hanterad identitet med Microsoft Entra-autentisering. Standardarbetsflöden stöds för närvarande inte i avsnittet om hur du aktiverar autentisering för funktionsanrop.

  • Azure Logic Apps stöder inte användning av Azure Functions med distributionsfack aktiverade. Även om det här scenariot ibland kan fungera är det här beteendet oförutsägbart och kan leda till auktoriseringsproblem när arbetsflödet försöker anropa Azure-funktionen.

Förutsättningar

  • Azure-konto och prenumeration. Om du inte har någon prenumeration kan du registrera ett kostnadsfritt Azure-konto.

  • En Azure-funktionsappresurs, som är en container för en funktion som du kan skapa med hjälp av Azure Functions, tillsammans med den funktion som du vill använda.

    Om du inte har någon funktionsapp skapar du funktionsappen först. Du kan sedan skapa din funktion antingen utanför logikappens arbetsflöde med hjälp av Azure Functions i Azure-portalen eller inifrån logikappens arbetsflöde i designern.

  • När du arbetar med logikappresurser gäller samma krav för både funktionsappar och funktioner, befintliga eller nya:

    • Funktionsappens resurs och logikappresurs måste använda samma Azure-prenumeration.

    • Nya funktionsappar måste använda antingen .NET eller JavaScript som körningsstack. När du lägger till en ny funktion i befintliga funktionsappar kan du välja C# eller JavaScript.

    • Funktionen använder HTTP-utlösarmallen .

      HTTP-utlösarmallen kan acceptera innehåll som har application/json typen från logikappens arbetsflöde. När du lägger till en funktion i arbetsflödet visar designern anpassade funktioner som skapas från den här mallen i din Azure-prenumeration.

    • Din funktion använder inte anpassade vägar om du inte har definierat en OpenAPI-definition (Swagger-fil).

    • Om du har en OpenAPI-definition för din funktion ger arbetsflödesdesignern dig en bättre upplevelse när du arbetar med funktionsparametrar. Innan logikappens arbetsflöde kan hitta och komma åt funktioner som har OpenAPI-definitioner konfigurerar du funktionsappen genom att följa dessa senare steg.

  • Om du vill följa exemplet i den här instruktionsguiden behöver du en förbrukningslogikappresurs och ett arbetsflöde som har en utlösare som första steg. Även om du kan använda valfri utlösare för ditt scenario använder det här exemplet Office 365 Outlook-utlösaren med namnet När ett nytt e-postmeddelande kommer.

Hitta funktioner som har OpenAPI-beskrivningar

För en mer omfattande upplevelse när du arbetar med funktionsparametrar i arbetsflödesdesignern genererar du en OpenAPI-definition eller Swagger-fil för din funktion. Följ dessa steg för att konfigurera funktionsappen så att logikappen kan hitta och använda funktioner som har Swagger-beskrivningar:

  1. Öppna funktionsappen i Azure-portalen. Kontrollera att funktionsappen körs aktivt.

  2. Konfigurera Resursdelning mellan ursprung (CORS) för funktionsappen så att alla ursprung tillåts genom att följa dessa steg:

    1. I funktionsappens resursmeny går du till API:et och väljer CORS.

      Skärmbild som visar Azure-portalen, funktionsappens resursmeny med alternativet CORS valt.

    2. Under CORS lägger du till jokertecknet asterisk (*) men tar bort alla andra ursprung i listan och väljer Spara.

      Skärmbild som visar Azure-portalen,

Få åtkomst till egenskapsvärden i HTTP-begäranden

Webhook-funktioner kan acceptera HTTP-begäranden som indata och skicka dessa begäranden till andra funktioner. Även om Azure Logic Apps till exempel har funktioner som konverterar DateTime-värden, visar den här grundläggande JavaScript-exempelfunktionen hur du kan komma åt en egenskap i ett begärandeobjekt som skickas till funktionen och utföra åtgärder på det egenskapsvärdet. För att komma åt egenskaper inuti objekt använder det här exemplet punktoperatorn (.):

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

Det här händer i den här funktionen:

  1. Funktionen skapar en data variabel och tilldelar body objektet inuti objektet till variabeln request . Funktionen använder punktoperatorn (.) för att referera body till objektet inuti request objektet:

    var data = request.body;
    
  2. Funktionen kan nu komma åt date egenskapen via variabeln data och konvertera egenskapsvärdet från DateTime-typ till DateString-typ genom att anropa ToDateString() funktionen. Funktionen returnerar också resultatet via body egenskapen i funktionens svar:

    body: data.date.ToDateString();
    

Nu när du har skapat din funktion i Azure följer du stegen för att lägga till funktioner i logikappar.

Skapa funktioner inifrån logikappens arbetsflöden (endast förbrukningsarbetsflöden)

Du kan skapa funktioner direkt inifrån ditt förbrukningsarbetsflöde med hjälp av den inbyggda Azure Functions-åtgärden i arbetsflödesdesignern, men du kan bara använda den här metoden för funktioner som skrivits i JavaScript. För andra språk kan du skapa funktioner via Azure Functions-upplevelsen i Azure-portalen. Men innan du kan skapa din funktion i Azure måste du redan ha en funktionsappresurs, som är en container för dina funktioner. Om du inte har någon funktionsapp skapar du funktionsappen först. Mer information finns i Skapa din första funktion i Azure-portalen.

Standardarbetsflöden stöder för närvarande inte det här alternativet för att skapa en funktion inifrån ett arbetsflöde, men du kan skapa funktionen på följande sätt och sedan anropa funktionen från ditt standardlogikapparbetsflöde med hjälp av Azure Functions-åtgärden Anropa en Azure-funktion.

  1. Öppna logikappen och arbetsflödet för förbrukning i designern i Azure-portalen.

  2. I designern följer du de här allmänna stegen för att lägga till Azure Functions-åtgärden Med namnet Välj en Azure-funktion.

  3. I listan med funktionsappar som visas väljer du din funktionsapp. I listan med åtgärder som visas väljer du åtgärden Skapa ny funktion.

    Skärmbild som visar åtgärdsväljaren med

  4. Definiera funktionen i funktionsdefinitionsredigeraren:

    1. Ange ett namn för funktionen i rutan Funktionsnamn.

    2. I rutan Kod lägger du till koden i funktionsmallen, inklusive det svar och den nyttolast som du vill ska returneras till logikappen när funktionen är klar. När du är klar väljer du Skapa, till exempel:

    Skärmbild som visar funktionsredigeringsredigeraren med mallfunktionsdefinition.

    I mallens kod context refererar objektet till det meddelande som arbetsflödet skickar via egenskapen Begärandetext i ett senare steg. Använd följande syntax för att komma åt context objektets egenskaper inifrån funktionen:

    context.body.<property-name>

    Om du till exempel vill referera content till egenskapen inuti context objektet använder du följande syntax:

    context.body.content

    Mallkoden innehåller också en input variabel som lagrar värdet från parametern data så att funktionen kan utföra åtgärder på det värdet. I JavaScript-funktioner är variabeln data också en genväg för context.body.

    Kommentar

    Egenskapen body här gäller för context objektet och är inte samma som brödtexttoken från en åtgärds utdata, som du också kan skicka till din funktion.

  5. I rutan Begärandetext anger du funktionens indata, som måste formateras som ett JSON-objekt (JavaScript Object Notation).

    Den här indatan är kontextobjektet eller meddelandet som logikappen skickar till din funktion. När du klickar i fältet Begärandetext visas listan med dynamiskt innehåll så att du kan välja token för utdata från föregående steg. Det här exemplet anger att kontextnyttolasten innehåller en egenskap med namnet content som har värdet Från token från e-postutlösaren.

    Skärmbild som visar funktionen och egenskapen

    Här är kontextobjektet inte gjutet som en sträng, så objektets innehåll läggs till direkt i JSON-nyttolasten. Men när kontextobjektet inte är en JSON-token som skickar en sträng, ett JSON-objekt eller en JSON-matris får du ett fel. Om det här exemplet i stället använde token för mottagen tid kan du omvandla kontextobjektet som en sträng genom att lägga till dubbla citattecken, till exempel:

    Skärmbild som visar egenskapen

  6. Om du vill ange annan information, till exempel vilken metod som ska användas, begärandehuvuden eller frågeparametrar eller autentisering, öppnar du listan Lägg till ny parameter och väljer önskade alternativ. För autentisering skiljer sig alternativen åt baserat på den valda funktionen. Mer information finns i Aktivera autentisering för funktioner.

Lägga till befintliga funktioner i logikapparbetsflöden (Förbrukning + Standardarbetsflöden)

Om du vill anropa befintliga funktioner från logikappens arbetsflöde kan du lägga till funktioner som andra åtgärder i designern.

  1. Öppna arbetsflödet för förbrukningslogikappen i designern i Azure-portalen.

  2. I designern följer du de här allmänna stegen för att lägga till Azure Functions-åtgärden Med namnet Välj en Azure-funktion.

  3. I listan funktionsappar väljer du din funktionsapp. I funktionslistan som visas väljer du din funktion.

    Skärmbild för Förbrukning som visar en vald funktionsapp och funktion.

    För funktioner som har API-definitioner (Swagger-beskrivningar) och konfigureras så att logikappen kan hitta och komma åt dessa funktioner kan du välja Swagger-åtgärder.

    Skärmbild för Förbrukning som visar en vald funktionsapp och sedan under

  4. I rutan Begärandetext anger du funktionens indata, som måste formateras som ett JSON-objekt (JavaScript Object Notation).

    Den här indatan är kontextobjektet eller meddelandet som logikappen skickar till din funktion. När du klickar i fältet Begärandetext visas listan med dynamiskt innehåll så att du kan välja token för utdata från föregående steg. Det här exemplet anger att kontextnyttolasten innehåller en egenskap med namnet content som har värdet Från token från e-postutlösaren.

    Skärmbild för förbrukning som visar funktionen med ett exempel på

    Här är kontextobjektet inte gjutet som en sträng, så objektets innehåll läggs till direkt i JSON-nyttolasten. Men när kontextobjektet inte är en JSON-token som skickar en sträng, ett JSON-objekt eller en JSON-matris får du ett fel. Om det här exemplet i stället använde token för mottagen tid kan du omvandla kontextobjektet som en sträng genom att lägga till dubbla citattecken:

    Skärmbild för Förbrukning som visar funktionen med exemplet

  5. Om du vill ange annan information, till exempel vilken metod som ska användas, begärandehuvuden, frågeparametrar eller autentisering, öppnar du listan Lägg till ny parameter och väljer önskade alternativ. För autentisering skiljer sig alternativen åt baserat på den valda funktionen. Mer information finns i Aktivera autentisering för funktioner.

Aktivera autentisering för funktionsanrop (endast förbrukningsarbetsflöden)

Ditt förbrukningsarbetsflöde kan autentisera funktionsanrop och åtkomst till resurser som skyddas av Microsoft Entra-ID med hjälp av en hanterad identitet (kallades tidigare hanterad tjänstidentitet eller MSI). Den här hanterade identiteten kan autentisera åtkomst utan att behöva logga in och ange autentiseringsuppgifter eller hemligheter. Azure hanterar den här identiteten åt dig och hjälper till att skydda dina autentiseringsuppgifter eftersom du inte måste ange eller rotera hemligheter. Du kan konfigurera den systemtilldelade identiteten eller en manuellt skapad, användartilldelad identitet på logikappens resursnivå. Funktionen som anropas från arbetsflödet kan använda samma identitet för autentisering.

Kommentar

För närvarande stöder endast förbrukningsarbetsflöden autentisering för Azure-funktionsanrop med hjälp av en hanterad identitet och Microsoft Entra-autentisering. Standardarbetsflöden innehåller för närvarande inte det här stödet när du använder Azure Functions-anslutningsappen.

Mer information finns i följande dokumentation:

Om du vill konfigurera din funktionsapp och funktion så att de kan använda din förbrukningslogikapps hanterade identitet följer du de här stegen på hög nivå:

  1. Aktivera och konfigurera logikappens hanterade identitet.

  2. Konfigurera din funktion för anonym autentisering.

  3. Hitta de värden som krävs för att konfigurera Microsoft Entra-autentisering.

  4. Skapa en appregistrering för funktionsappen.

Konfigurera din funktion för anonym autentisering (endast förbrukningsarbetsflöden)

För att funktionen ska kunna använda förbrukningslogikappens hanterade identitet måste du ställa in funktionens autentiseringsnivå på anonym. Annars genererar arbetsflödet ett BadRequest-fel .

  1. I Azure-portalen letar du upp och väljer din funktionsapp.

    Följande steg använder en exempelfunktionsapp med namnet FabrikamFunctionApp.

  2. På funktionsappens resursmeny går du till Utvecklingsverktyg och väljer Avancerade verktyg>Gå.

    Skärmbild som visar funktionsappmenyn med

  3. När sidan Kudu-tjänster har öppnats går du till Kudu-webbplatsens namnlist och väljer CMDmenyn Felsökningskonsol.

    Skärmbild som visar Kudu Services-sidan med menyn

  4. När nästa sida visas väljer du webbplatsen>wwwroot>your-function i mapplistan.

    Följande steg använder en exempelfunktion med namnet FabrikamAzureFunction.

    Skärmbild som visar mapplistan med

  5. Öppna filen function.json för redigering.

    Skärmbild som visar filen

  6. I bindningsobjektet kontrollerar du om egenskapen authLevel finns. Om egenskapen finns anger du egenskapsvärdet till anonymt. Annars lägger du till den egenskapen och anger värdet.

    Skärmbild som visar objektet

  7. Spara inställningarna när du är klar. Fortsätt till nästa avsnitt.

Hitta de värden som krävs för att konfigurera Microsoft Entra-autentisering (endast förbrukningsarbetsflöden)

Innan du kan konfigurera funktionsappen så att den använder Microsoft Entra-autentisering måste du hitta och spara följande värden genom att följa stegen i det här avsnittet.

  1. Hitta objekt-ID:t (huvudnamn) för logikappens hanterade identitet.
  2. Hitta klientorganisations-ID:t för ditt Microsoft Entra-ID.

Hitta objekt-ID:t för logikappens hanterade identitet

  1. När din förbrukningslogikapp har aktiverat sin hanterade identitet går du till logikappmenyn under Inställningar, väljer Identitet och väljer sedan antingen Systemtilldelad eller Användartilldelad.

    • Systemtilldelade

      För den systemtilldelade identiteten kopierar du identitetens objekt-ID, till exempel:

      Skärmbild som visar fönstret Förbrukningslogikappen

    • Tilldelad användare

      1. För den användartilldelade identiteten väljer du identiteten för att hitta klient-ID:t, till exempel:

        Skärmbild som visar fönstret Förbrukningslogikappen

      2. I fönstret Översikt för den hanterade identiteten hittar du identitetens klient-ID, till exempel:

        Skärmbild som visar den användartilldelade identitetens

Hitta klientorganisations-ID:t för ditt Microsoft Entra-ID

Om du vill hitta ditt Klient-ID för Microsoft Entra kör du antingen PowerShell-kommandot Get-AzureAccount eller i Azure-portalen genom att följa dessa steg:

  1. Öppna din Microsoft Entra-klientorganisation i Azure-portalen. De här stegen använder Fabrikam som exempelklient.

  2. På Microsoft Entra-klientmenyn går du till Hantera och väljer Egenskaper.

  3. Kopiera och spara ditt klient-ID för senare användning, till exempel:

    Skärmbild som visar fönstret Egenskaper för Ditt Microsoft Entra-ID med klient-ID:ts kopieringsknapp markerad.

Skapa appregistrering för funktionsappen (endast förbrukningsarbetsflöden)

När du har hittat objekt-ID:t för din förbrukningslogikapps hanterade identitet och klient-ID för ditt Microsoft Entra-ID kan du konfigurera funktionsappen så att den använder Microsoft Entra-autentisering genom att skapa en appregistrering.

  1. Öppna funktionsappen i Azure-portalen.

  2. Välj Autentisering under Inställningar på funktionsappmenyn och välj sedan Lägg till identitetsprovider.

    Skärmbild som visar funktionsappmenyn med fönstret

  3. I fönstret Lägg till en identitetsprovider går du till Grundläggande i listan Identitetsprovideroch väljer Microsoft.

  4. Under Appregistrering för Appregistreringstyp väljer du Ange information om en befintlig appregistrering och anger de värden som du sparade tidigare.

    Property Obligatoriskt Värde beskrivning
    Program-ID (klient)-ID Ja <object-ID> Den unika identifierare som ska användas för den här appregistreringen. I det här scenariot använder du objekt-ID:t från logikappens hanterade identitet.
    Client secret Valfritt, men rekommenderas <klienthemlighet> Det hemliga värde som appen använder för att bevisa sin identitet när en token begärs. Klienthemligheten skapas och lagras i appens konfiguration som en plats-sticky-programinställning med namnet MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Om du vill hantera hemligheten i Azure Key Vault i stället kan du uppdatera den här inställningen senare för att använda Key Vault-referenser.

    – Om du anger ett klienthemlighetsvärde använder inloggningsåtgärder hybridflödet och returnerar både åtkomst- och uppdateringstoken.

    – Om du inte anger någon klienthemlighet använder inloggningsåtgärder det implicita beviljandeflödet OAuth 2.0 och returnerar endast en ID-token.

    Dessa token skickas av providern och lagras i EasyAuth-tokenarkivet.
    Utfärdar-URL Nej <authentication-endpoint-URL>/<Azure-AD-tenant-ID>/v2.0 Den här URL:en omdirigerar användare till rätt Microsoft Entra-klientorganisation och laddar ned lämpliga metadata för att fastställa lämpliga tokensigneringsnycklar och anspråksvärde för token utfärdare. För appar som använder Azure AD v1 utelämnar du /v2.0 från URL:en.

    I det här scenariot använder du följande URL: https://sts.windows.net/<Azure-AD-tenant-ID>
    Tillåtna token-målgrupper Nej <application-ID-URI> Program-ID URI (resurs-ID) för funktionsappen. För ett moln eller en serverapp där du vill tillåta autentiseringstoken från en webbapp lägger du till program-ID-URI:n för webbappen. Det konfigurerade klient-ID:t betraktas alltid implicit som en tillåten målgrupp.

    För det här scenariot är https://management.azure.comvärdet . Senare kan du använda samma URI i egenskapen Målgrupp när du konfigurerar funktionsåtgärden i arbetsflödet för att använda den hanterade identiteten.

    Viktigt: Program-ID-URI (resurs-ID) måste exakt matcha det värde som Microsoft Entra-ID förväntar sig, inklusive eventuella efterföljande snedstreck.

    I det här läget ser din version ut ungefär som i det här exemplet:

    Skärmbild som visar appregistreringen för logikappen och identitetsprovidern för funktionsappen.

    Om du konfigurerar funktionsappen med en identitetsprovider för första gången visas även avsnittet Inställningar för App Service-autentisering. De här alternativen avgör hur funktionsappen svarar på oautentiserade begäranden. Standardvalet omdirigerar alla begäranden för att logga in med den nya identitetsprovidern. Du kan anpassa det här beteendet nu eller justera de här inställningarna senare från huvudsidan för autentisering genom att välja Redigera bredvid Autentiseringsinställningar. Mer information om de här alternativen finns i Autentiseringsflöde – Autentisering och auktorisering i Azure App Service och Azure Functions.

    Annars kan du fortsätta med nästa steg.

  5. Välj Lägg till för att slutföra skapandet av appregistreringen.

    När du är klar visar sidan Autentisering nu identitetsprovidern och app-ID (klient-ID) för appregistreringen. Din funktionsapp kan nu använda den här appregistreringen för autentisering.

  6. Kopiera app-ID (klient-ID) för din funktion som ska användas i egenskapen Målgrupp senare i arbetsflödet.

  7. Gå tillbaka till designern och följ stegen för att autentisera åtkomst med den hanterade identiteten med hjälp av den inbyggda Azure Functions-åtgärden.

Nästa steg