Dela via


Anropa Azure Functions från arbetsflöden i Azure Logic Apps

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

Om du vill köra kod som utför ett visst jobb i logikappens arbetsflöde behöver du inte skapa en fullständig app eller infrastruktur. I stället kan du skapa och anropa en Azure-funktion. Azure Functions tillhandahåller serverlös databehandling i molnet och möjlighet att utföra följande uppgifter:

  • Utöka arbetsflödets beteende genom att köra funktioner som skapats med hjälp av Node.js eller C#.
  • Utför beräkningar i arbetsflödet.
  • Använd avancerade formaterings- eller beräkningsfält i arbetsflödet.

Den här instruktionsguiden visar hur du anropar en befintlig Azure-funktion från ditt förbruknings- eller standardarbetsflöde. Information om hur du kör kod utan att använda Azure Functions finns i följande dokumentation:

Begränsningar

  • 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 innehåller en eller flera Azure-funktioner.

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

    • Funktionsappresursen måste använda antingen .NET eller Node.js som körningsstack.

    • När du lägger till en ny funktion i funktionsappen kan du välja C # eller JavaScript.

  • Den Azure-funktion som du vill anropa. Du kan skapa den här funktionen med hjälp av följande verktyg:

    • Azure-portalen

    • Visual Studio

    • Visual Studio Code

    • Azure CLI

    • Azure PowerShell

    • ARM-mall

    • Funktionen måste använda 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.

    • Funktionskoden måste innehålla det svar och den nyttolast som du vill ska returneras till arbetsflödet när funktionen har slutförts. Objektet context refererar till meddelandet som arbetsflödet skickar via Azure Functions-åtgärdsparametern med namnet Request Body (Begärandetext ) senare i den här guiden.

      Den här guiden använder följande exempelfunktion, som heter 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();
      }
      

      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 i context objektet använder du följande syntax:

      context.body.content

      Den här koden 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 i en åtgärds utdata, som du också kan skicka till din funktion.

    • Funktionen kan inte använda anpassade vägar om du inte har definierat en OpenAPI-definition.

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

  • Ett arbetsflöde för förbruknings- eller standardlogikappen som börjar med en utlösare.

    Exemplen i den här guiden använder Office 365 Outlook-utlösaren med namnet När ett nytt e-postmeddelande kommer.

  • Om du vill skapa och anropa en Azure-funktion som anropar ett annat arbetsflöde kontrollerar du att det sekundära arbetsflödet börjar med en utlösare som tillhandahåller en anropsbar slutpunkt.

    Du kan till exempel starta arbetsflödet med den allmänna HTTP- eller begärandeutlösaren eller använda en tjänstbaserad utlösare, till exempel Azure Queues eller Event Grid. I funktionen skickar du en HTTP POST-begäran till utlösarens URL och tar med nyttolasten som du vill att det sekundära arbetsflödet ska bearbeta. Mer information finns i Anropa, utlösa eller kapsla logikapparbetsflöden.

Tips för att arbeta med Azure-funktioner

Hitta funktioner med OpenAPI-definitioner

Följ dessa steg för att konfigurera funktionsappen så att arbetsflödet kan hitta och använda funktioner som har OpenAPI-definitioner:

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

  2. Konfigurera Cors (Cross-Origin Resource Sharing) i funktionsappen så att alla ursprung tillåts genom att följa dessa steg:

    1. Välj CORS under API på funktionsappmenyn.

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

      Skärmbild som visar Azure Portal, CORS-fönster och jokertecken * som angetts under Tillåtna ursprung.

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

Webhook-baserade 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 HTTP-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 sedan objektet, som finns inuti request objektet, till variabeln. 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();
    

När du har skapat din funktion i Azure följer du stegen för att lägga till en Azure-funktion i arbetsflödet.

Skicka URI-parametrar till en funktion

Om du måste skicka en URI-parameter till din funktion kan du använda frågeparametrar i funktionens slutpunkts-URL.

  1. När arbetsflödesdesignern är öppen för logikappen och funktionsinformationsfönstret är öppet går du till listan Avancerade parametrar och väljer Frågor.

    En tabell visas där du kan ange parameterindata som nyckel/värde-par.

  2. Ange nyckel/värde-paret för parametern, till exempel:

    Skärmbild som visar funktionsinformationsfönstret med frågeparametern och exempel på nyckel/värde-indata.

Lägga till en funktion i arbetsflödet (Förbrukning + Standardarbetsflöden)

Om du vill anropa en Azure-funktion från arbetsflödet kan du lägga till funktioner som andra åtgärder i designern.

  1. I Azure Portal öppnar du arbetsflödet för förbrukningslogikappen i designern.

  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. Följ dessa steg i fönstret Lägg till en åtgärd :

    1. Välj funktionsappen i listan funktionsappar, välj funktionen och välj sedan Lägg till åtgärd, till exempel:

      Skärmbild som visar arbetsflödet Förbrukning med en vald funktionsapp och funktion.

  4. Följ dessa steg när funktionens informationsruta visas:

    1. För Begärandetext anger du funktionens indata, som måste använda formatet för ett JSON-objekt (JavaScript Object Notation), till exempel:

      {"context": <selected-input> }

      Den här indatan är nyttolasten för kontextobjektet eller meddelandet som arbetsflödet skickar till din funktion.

      • Om du vill välja token som representerar utdata från föregående steg väljer du i rutan Begärandetext och väljer sedan alternativet för att öppna listan med dynamiskt innehåll (blixtikonen).

      • Om du vill skapa ett uttryck väljer du i rutan Begärandetext och väljer sedan alternativet för att öppna uttrycksredigeraren (formelikonen).

      I följande exempel anges ett JSON-objekt med content attributet och en token som representerar Utdata från e-postutlösaren som värdet Förfrågningstext :

      Skärmbild som visar arbetsflödet Förbrukning och en funktion med ett exempel på begärandetext för kontextobjektets nyttolast.

      Här är kontextobjektet inte gjutet som en sträng, så objektets innehåll läggs till direkt i JSON-nyttolasten. Här är det fullständiga exemplet:

      Skärmbild som visar arbetsflödet Förbrukning och en funktion med ett fullständigt exempel på begärandetext för kontextobjektets nyttolast.

      Om du anger ett annat kontextobjekt än en JSON-token som skickar en sträng, ett JSON-objekt eller en JSON-matris får du ett fel. Du kan dock omvandla kontextobjektet som en sträng genom att omsluta token inom citattecken (""), till exempel om du vill använda token för mottagen tid :

      Skärmbild som visar arbetsflöde för förbrukning och ett exempel på begärandetext som omvandlar kontextobjekt som en sträng.

    2. Om du vill ange annan information, till exempel vilken metod som ska användas, begärandehuvuden, frågeparametrar eller autentisering, öppnar du listan Avancerade parametrar och väljer de parametrar som du vill använda. 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 Azure-funktionsanrop (endast förbrukningsarbetsflöden)

Ditt förbrukningsarbetsflöde kan använda en hanterad identitet för att autentisera ett Azure-funktionsanrop och få åtkomst till resurser som skyddas av Microsoft Entra-ID. Den hanterade identiteten kan autentisera åtkomst utan att du behöver 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å. Den Azure-funktion som anropas från arbetsflödet kan använda samma hanterade identitet för autentisering.

Kommentar

Endast förbrukningsarbetsflöden stöder autentisering för ett 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 åtgärden för att anropa en Azure-funktion.

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 ange autentiseringsnivån för funktionen till anonymous. Annars genererar arbetsflödet ett BadRequest-fel .

  1. I Azure Portal 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 valda alternativ för Avancerade verktyg och Go.

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

    Skärmbild som visar sidan Kudu Services med öppna menyn Felsökningskonsol och valt alternativ med namnet CMD.

  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 de öppnade mapparna för webbplatsen, wwwroot och din funktion.

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

    Skärmbild som visar den function.json filen med valt redigeringskommando.

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

    Skärmbild som visar bindningsobjekt med egenskapen authLevel inställd på anonym.

  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 för att använda den hanterade identiteten och Microsoft Entra-autentiseringen måste du hitta och spara följande värden genom att följa stegen i det här avsnittet.

  1. Hitta klientorganisations-ID:t för din Microsoft Entra-klientorganisation.

  2. Hitta objekt-ID:t för din hanterade identitet.

  3. Hitta program-ID:t för enterprise-programmet som är associerat med din hanterade identitet.

Hitta klientorganisations-ID:t för din Microsoft Entra-klientorganisation

Kör antingen PowerShell-kommandot Get-AzureAccount eller i Azure Portal följer du dessa steg:

  1. Öppna din Microsoft Entra-klientorganisation i Azure Portal.

    I den här guiden används Fabrikam som exempelklient.

  2. På klientmenyn väljer du Översikt.

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

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

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

När du har aktiverat den hanterade identiteten för din förbrukningslogikappresurs letar du reda på objektet för din hanterade identitet. Du använder det här ID:t för att hitta det associerade Enterprise-programmet i din Microsoft Entra-klientorganisation.

  1. På logikappmenyn går du till Inställningar, väljer Identitet och väljer sedan antingen Systemtilldelad eller Användartilldelad.

    • Systemtilldelade

      Kopiera identitetens objekt-ID (huvudnamn):

      Skärmbild som visar förbrukningslogikappens identitetssida med den valda fliken med namnet Systemtilldelad.

    • Tilldelad användare

      1. Välj identiteten:

        Skärmbild som visar förbrukningslogikappens identitetssida med den valda fliken med namnet Användartilldelad.

      2. Kopiera identitetens objekt-ID (huvudnamn):

        Skärmbild som visar förbrukningslogikappens användartilldelade identitet översiktssida med objektets (huvudnamn) ID valt.

Hitta program-ID:t för Azure Enterprise-programmet som är associerat med din hanterade identitet

När du aktiverar en hanterad identitet på logikappresursen skapar Azure automatiskt ett associerat Azure Enterprise-program med samma namn. Nu måste du hitta det associerade Enterprise-programmet och kopiera dess program-ID. Senare använder du det här program-ID:t för att lägga till en identitetsprovider för funktionsappen genom att skapa en appregistrering.

  1. I Azure Portal letar du upp och öppnar din Microsoft Entra-klientorganisation.

  2. På klientmenyn går du till Hantera och väljer Företagsprogram.

  3. På sidan Alla program i sökrutan anger du objekt-ID:t för din hanterade identitet. Från resultaten hittar du det matchande företagsprogrammet och kopierar program-ID:t:

    Skärmbild som visar microsoft Entra-klientsidan med namnet Alla program, med objekt-ID för företagsprogram i sökrutan och valt matchande program-ID.

  4. Använd nu det kopierade program-ID:t för att lägga till en identitetsprovider i funktionsappen.

Lägg till identitetsprovider för funktionsappen (endast förbrukningsarbetsflöden)

Nu när du har klient-ID:t och program-ID:t kan du konfigurera funktionsappen så att den använder Microsoft Entra-autentisering genom att lägga till en identitetsprovider och skapa en appregistrering.

  1. Öppna funktionsappen i Azure Portal.

  2. På funktionsappmenyn går du till Inställningar, väljer Autentisering och sedan Lägg till identitetsprovider.

    Skärmbild som visar funktionsappmenyn med sidan Autentisering och valt alternativ med namnet Lägg till identitetsprovider.

  3. I fönstret Lägg till en identitetsprovider går du till Grundläggande i listan Identitetsprovider och 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 <application-ID> Den unika identifierare som ska användas för den här appregistreringen. I det här exemplet använder du det program-ID som du kopierade för det Enterprise-program som är associerat med din 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.

    - Se till att regelbundet rotera hemligheter och lagra dem på ett säkert sätt. Du kan till exempel hantera dina hemligheter i Azure Key Vault där du kan använda en hanterad identitet för att hämta nyckeln utan att exponera värdet för en obehörig användare. Du kan uppdatera den här inställningen 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. Den här metoden returnerar bara en ID-token eller åtkomsttoken direkt. Dessa token skickas av providern och lagras i EasyAuth-tokenarkivet.

    Viktigt: På grund av säkerhetsrisker är det implicita beviljandeflödet inte längre en lämplig autentiseringsmetod. Använd i stället antingen auktoriseringskodflöde med PKCE(Proof Key for Code Exchange) eller auktoriseringskoder för ensidesprogram (SPA).
    Utfärdar-URL Nej <authentication-endpoint-URL>/<Microsoft-Entra-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/<Microsoft-Entra-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 appregistrering för din logikapp och identitetsprovider 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 appregistreringens program-ID (klient). Din funktionsapp kan nu använda den här appregistreringen för autentisering.

  6. Kopiera appregistreringens app-ID (klient)-ID som ska användas senare i Azure Functions-åtgärdens målgruppsegenskap för ditt arbetsflöde.

    Skärmbild som visar ny identitetsprovider för funktionsappen.

  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