Delen via


Azure Functions aanroepen vanuit werkstromen in Azure Logic Apps

Van toepassing op: Azure Logic Apps (Verbruik + Standard)

Als u code wilt uitvoeren die een specifieke taak uitvoert in uw werkstroom voor logische apps, hoeft u geen volledige app of infrastructuur te bouwen. In plaats daarvan kunt u een Azure-functie maken en aanroepen. Azure Functions biedt serverloze computing in de cloud en de mogelijkheid om de volgende taken uit te voeren:

  • Breid het gedrag van uw werkstroom uit door functies uit te voeren die zijn gemaakt met behulp van Node.js of C#.
  • Voer berekeningen uit in uw werkstroom.
  • Pas geavanceerde opmaak of rekenvelden toe in uw werkstroom.

Deze handleiding laat zien hoe u een bestaande Azure-functie aanroept vanuit uw verbruiks- of Standaardwerkstroom. Raadpleeg de volgende documentatie om code uit te voeren zonder Azure Functions te gebruiken:

Beperkingen

  • Alleen verbruikswerkstromen ondersteunen het verifiëren van Azure-functie-aanroepen met behulp van een beheerde identiteit met Microsoft Entra-verificatie. Standaardwerkstromen worden momenteel niet ondersteund in de sectie over het inschakelen van verificatie voor functie-aanroepen.

  • Azure Logic Apps biedt geen ondersteuning voor het gebruik van Azure Functions waarvoor implementatiesites zijn ingeschakeld. Hoewel dit scenario soms kan werken, is dit gedrag onvoorspelbaar en kan dit leiden tot autorisatieproblemen wanneer uw werkstroom probeert de Azure-functie aan te roepen.

Vereisten

  • Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.

  • Een Azure-functie-app-resource die een of meer Azure-functies bevat.

    • Uw functie-app-resource en logische app-resource moeten hetzelfde Azure-abonnement gebruiken.

    • Uw functie-app-resource moet .NET of Node.js als runtimestack gebruiken.

    • Wanneer u een nieuwe functie aan uw functie-app toevoegt, kunt u C# of JavaScript selecteren.

  • De Azure-functie die u wilt aanroepen. U kunt deze functie maken met behulp van de volgende hulpprogramma's:

    • Azure-portal

    • Visual Studio

    • Visual Studio Code

    • Azure-CLI

    • Azure PowerShell

    • ARM-sjabloon

    • Uw functie moet de HTTP-triggersjabloon gebruiken.

      De HTTP-triggersjabloon kan inhoud accepteren die type heeft application/json uit uw werkstroom voor logische apps. Wanneer u een functie aan uw werkstroom toevoegt, worden in de ontwerpfunctie aangepaste functies weergegeven die zijn gemaakt op basis van deze sjabloon in uw Azure-abonnement.

    • Uw functiecode moet het antwoord en de nettolading bevatten die u wilt retourneren aan uw werkstroom nadat uw functie is voltooid. Het context object verwijst naar het bericht dat uw werkstroom verzendt via de Actieparameter van Azure Functions met de naam Aanvraagbody verderop in deze handleiding.

      In deze handleiding wordt de volgende voorbeeldfunctie gebruikt, met de naam 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();
      }
      

      Gebruik de volgende syntaxis om toegang te krijgen tot de eigenschappen van het context object vanuit uw functie:

      context.body.<property-name>

      Als u bijvoorbeeld naar de content eigenschap in het context object wilt verwijzen, gebruikt u de volgende syntaxis:

      context.body.content

      Deze code bevat ook een input variabele, waarin de waarde van de data parameter wordt opgeslagen, zodat uw functie bewerkingen op die waarde kan uitvoeren. Binnen JavaScript-functies is de data variabele ook een snelkoppeling voor context.body.

      Notitie

      De body eigenschap hier is van toepassing op het context object en is niet hetzelfde als het hoofdtoken in de uitvoer van een actie, die u mogelijk ook doorgeeft aan uw functie.

    • Uw functie kan geen aangepaste routes gebruiken, tenzij u een OpenAPI-definitie hebt gedefinieerd.

      Wanneer u een OpenAPI-definitie voor uw functie hebt, biedt de werkstroomontwerper u een uitgebreidere ervaring wanneer u met functieparameters werkt. Voordat uw werkstroom functies met OpenAPI-definities kan vinden en openen, stelt u uw functie-app in door deze stappen te volgen.

  • Een werkstroom voor de logische app Verbruik of Standard die begint met een trigger.

    In de voorbeelden in deze handleiding wordt de Office 365 Outlook-trigger met de naam Wanneer er een nieuwe e-mail binnenkomt, gebruikt.

  • Als u een Azure-functie wilt maken en aanroepen die een andere werkstroom aanroept, moet u ervoor zorgen dat de secundaire werkstroom begint met een trigger die een aanroepbaar eindpunt biedt.

    U kunt de werkstroom bijvoorbeeld starten met de algemene HTTP- of aanvraagtrigger of u kunt een servicetrigger gebruiken, zoals Azure Queues of Event Grid. Verzend in uw functie een HTTP POST-aanvraag naar de URL van de trigger en neem de nettolading op die u door uw secundaire werkstroom wilt verwerken. Zie Werkstromen voor logische apps aanroepen, activeren of nesten voor meer informatie.

Tips voor het werken met Azure-functies

Functies zoeken met OpenAPI-definities

Als u uw functie-app wilt instellen zodat uw werkstroom functies met OpenAPI-definities kan vinden en gebruiken, voert u de volgende stappen uit:

  1. Open uw functie-app in Azure Portal. Zorg ervoor dat de functie-app actief wordt uitgevoerd.

  2. Stel in uw functie-app CORS (Cross-Origin Resource Sharing) in, zodat alle oorsprongen zijn toegestaan door de volgende stappen uit te voeren:

    1. Selecteer CORS in het menu van de functie-app onder API.

    2. Voeg onder Toegestane oorsprong het sterretje (*) jokerteken toe, maar verwijder alle andere oorsprongen in de lijst en selecteer Opslaan.

      Schermopname van Azure Portal, CORS-deelvenster en jokerteken * ingevoerd onder Toegestane oorsprongen.

Eigenschapswaarden in HTTP-aanvragen openen

Webhook-functies kunnen HTTP-aanvragen accepteren als invoer en deze aanvragen doorgeven aan andere functies. Hoewel Azure Logic Apps bijvoorbeeld functies heeft die Datum/tijd-waarden converteren, laat deze JavaScript-basisfunctie zien hoe u toegang hebt tot een eigenschap in een HTTP-aanvraagobject dat wordt doorgegeven aan de functie en bewerkingen uitvoert op die eigenschapswaarde. Voor toegang tot eigenschappen binnen objecten gebruikt dit voorbeeld de puntoperator (.):

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

Dit is wat er gebeurt in deze functie:

  1. De functie maakt een data variabele en wijst vervolgens het body object, dat zich in het request object bevindt, toe aan de variabele. De functie gebruikt de puntoperator (.) om te verwijzen naar het body object in het request object:

    var data = request.body;
    
  2. De functie heeft nu toegang tot de date eigenschap via de data variabele en converteert de eigenschapswaarde van het type DateTime naar het type DateString door de ToDateString() functie aan te roepen. De functie retourneert ook het resultaat via de body eigenschap in het antwoord van de functie:

    body: data.date.ToDateString();
    

Nadat u uw functie in Azure hebt gemaakt, volgt u de stappen om een Azure-functie toe te voegen aan uw werkstroom.

URI-parameters doorgeven aan een functie

Als u een URI-parameter moet doorgeven aan uw functie, kunt u queryparameters gebruiken in de eindpunt-URL van de functie.

  1. Open de werkstroomontwerper voor uw logische app en selecteer query's in het deelvenster met functiegegevens in de lijst Geavanceerde parameters.

    Er wordt een tabel weergegeven waarin u parameterinvoer kunt invoeren als sleutel-waardeparen.

  2. Voer het sleutel-waardepaar in voor uw parameter, bijvoorbeeld:

    Schermopname van het deelvenster Functie-informatie met de parameter Query's en voorbeeldinvoer van sleutelwaarden.

Een functie toevoegen aan uw werkstroom (Verbruik en standaardwerkstromen)

Als u een Azure-functie vanuit uw werkstroom wilt aanroepen, kunt u die functies toevoegen zoals elke andere actie in de ontwerpfunctie.

  1. Open in Azure Portal uw werkstroom voor logische verbruiks-apps in de ontwerpfunctie.

  2. Volg deze algemene stappen in de ontwerpfunctie om de Actie Azure Functions met de naam Een Azure-functie kiezen toe te voegen.

  3. Voer in het deelvenster Een actie toevoegen de volgende stappen uit:

    1. Selecteer uw functie-app in de lijst met functie-apps, selecteer de functie en selecteer vervolgens actie Toevoegen, bijvoorbeeld:

      Schermopname van de werkstroom Verbruik met een geselecteerde functie-app en -functie.

  4. Nadat het informatievak van de functie is weergegeven, voert u de volgende stappen uit:

    1. Geef voor aanvraagbody de invoer van uw functie op, die de indeling voor een JSON-object (JavaScript Object Notation) moet gebruiken, bijvoorbeeld:

      {"context": <selected-input> }

      Deze invoer is de nettolading van het contextobject of het bericht dat uw werkstroom naar uw functie verzendt.

      • Als u tokens wilt selecteren die uitvoer van vorige stappen vertegenwoordigen, selecteert u in het vak Hoofdtekst van aanvraag en selecteert u vervolgens de optie om de lijst met dynamische inhoud (bliksempictogram) te openen.

      • Als u een expressie wilt maken, selecteert u in het vak Aanvraagtekst en selecteert u vervolgens de optie om de expressie-editor (formulepictogram) te openen.

      In het volgende voorbeeld wordt een JSON-object opgegeven met het content kenmerk en een token dat de Uitvoer van de e-mailtrigger vertegenwoordigt als de waarde aanvraagbody:

      Schermopname van de werkstroom Verbruik en een functie met een aanvraagbodyvoorbeeld voor de nettolading van het contextobject.

      Hier wordt het contextobject niet als een tekenreeks gecast, zodat de inhoud van het object rechtstreeks wordt toegevoegd aan de JSON-nettolading. Hier volgt het volledige voorbeeld:

      Schermopname van de werkstroom Verbruik en een functie met een volledig voorbeeld van de aanvraagbody voor de nettolading van het contextobject.

      Als u een ander contextobject dan een JSON-token opgeeft dat een tekenreeks, een JSON-object of een JSON-matrix doorgeeft, krijgt u een foutmelding. U kunt het contextobject echter als een tekenreeks casten door het token tussen aanhalingstekens ("") te plaatsen, bijvoorbeeld als u het ontvangen tijdtoken wilt gebruiken:

      Schermopname van de werkstroom Verbruik en een voorbeeld van de aanvraagtekst waarmee contextobject als een tekenreeks wordt gecast.

    2. Als u andere details wilt opgeven, zoals de te gebruiken methode, aanvraagheaders, queryparameters of verificatie, opent u de lijst geavanceerde parameters en selecteert u de gewenste parameters. Voor verificatie verschillen uw opties op basis van de geselecteerde functie. Raadpleeg Verificatie inschakelen voor functies voor meer informatie.

Verificatie inschakelen voor Azure-functie-aanroepen (alleen werkstromen voor verbruik)

Uw verbruikswerkstroom kan een beheerde identiteit gebruiken om een Azure-functieaanroep te verifiëren en toegang te krijgen tot resources die worden beveiligd door Microsoft Entra-id. De beheerde identiteit kan toegang verifiëren zonder dat u zich hoeft aan te melden en referenties of geheimen op te geven. Azure beheert deze identiteit voor u en helpt u bij het beveiligen van uw referenties omdat u geen geheimen hoeft op te geven of te wisselen. U kunt de door het systeem toegewezen identiteit of een handmatig gemaakte, door de gebruiker toegewezen identiteit instellen op resourceniveau van de logische app. De Azure-functie die wordt aangeroepen vanuit uw werkstroom, kan dezelfde beheerde identiteit gebruiken voor verificatie.

Notitie

Alleen verbruikswerkstromen ondersteunen verificatie voor een Azure-functieaanroep met behulp van een beheerde identiteit en Microsoft Entra-verificatie. Standaardwerkstromen bevatten momenteel deze ondersteuning niet wanneer u de actie gebruikt om een Azure-functie aan te roepen.

Voor meer informatie raadpleegt u de volgende documentatie:

Als u uw functie-app en -functie wilt instellen zodat ze de beheerde identiteit van uw logische verbruiks-app kunnen gebruiken, volgt u deze stappen op hoog niveau:

  1. De beheerde identiteit van uw logische app inschakelen en instellen.

  2. Stel uw functie in voor anonieme verificatie.

  3. Zoek de vereiste waarden voor het instellen van Microsoft Entra-verificatie.

  4. Maak een app-registratie voor uw functie-app.

Uw functie instellen voor anonieme verificatie (alleen werkstromen voor verbruik)

Als u de beheerde identiteit van uw logische app Verbruik wilt gebruiken, moet u het verificatieniveau van uw functie instellen op anonymous. Anders genereert uw werkstroom een BadRequest-fout .

  1. Zoek en selecteer uw functie-app in Azure Portal.

    In de volgende stappen wordt een voorbeeld van een functie-app met de naam FabrikamFunctionApp gebruikt.

  2. Selecteer In het resourcemenu van de functie-app onder Ontwikkelhulpprogramma's geavanceerde hulpprogramma's> Go.

    Schermopname van het menu van de functie-app met geselecteerde opties voor Geavanceerde hulpprogramma's en Go.

  3. Nadat de Kudu Plus-pagina is geopend, selecteert u CMD in de titelbalk van de Kudu-website in het menu Foutopsporingsconsole.

    Schermopname van de Kudu Services-pagina met geopend menu Debug Console en geselecteerde optie met de naam CMD.

  4. Nadat de volgende pagina wordt weergegeven, selecteert u in de mappenlijst de site>wwwroot>van uw functie.

    In de volgende stappen wordt een voorbeeldfunctie met de naam FabrikamAzureFunction gebruikt.

    Schermopname van de mappenlijst met de geopende mappen voor de site, wwwroot en uw functie.

  5. Open het function.json-bestand om te bewerken.

    Schermopname van het bestand function.json met de geselecteerde bewerkingsopdracht.

  6. Controleer in het bindingsobject of de eigenschap authLevel bestaat. Als de eigenschap bestaat, stelt u de eigenschapswaarde in op anonymous. Anders voegt u die eigenschap toe en stelt u de waarde in.

    Schermopname van bindingsobject met de eigenschap authLevel ingesteld op anoniem.

  7. Sla uw instellingen op wanneer u klaar bent. Ga door naar de volgende sectie.

Zoek de vereiste waarden voor het instellen van Microsoft Entra-verificatie (alleen werkstromen voor verbruik)

Voordat u uw functie-app kunt instellen voor het gebruik van de beheerde identiteit en Microsoft Entra-verificatie, moet u de volgende waarden zoeken en opslaan door de stappen in deze sectie te volgen.

  1. Zoek de tenant-id voor uw Microsoft Entra-tenant.

  2. Zoek de object-id voor uw beheerde identiteit.

  3. Zoek de toepassings-id voor de ondernemingstoepassing die is gekoppeld aan uw beheerde identiteit.

De tenant-id voor uw Microsoft Entra-tenant zoeken

Voer de PowerShell-opdracht Get-AzureAccount uit of voer in Azure Portal de volgende stappen uit:

  1. Open uw Microsoft Entra-tenant in Azure Portal.

    In deze handleiding wordt Fabrikam gebruikt als voorbeeldtenant.

  2. Selecteer Overzicht in het tenantmenu.

  3. Kopieer en sla uw tenant-id op voor later gebruik, bijvoorbeeld:

    Schermopname van de pagina Eigenschappen van Microsoft Entra-id met de knop Kopiëren van tenant-id geselecteerd.

De object-id voor uw beheerde identiteit zoeken

Nadat u de beheerde identiteit voor de logische app-resource Verbruik hebt ingeschakeld, zoekt u het object voor uw beheerde identiteit. U gebruikt deze id om de bijbehorende Enterprise-toepassing te vinden in uw Microsoft Entra-tenant.

  1. Selecteer Identiteit in het menu van de logische app onder Instellingen en selecteer vervolgens Door het systeem toegewezen of door de gebruiker toegewezen.

    • Systeem toegewezen

      Kopieer de object-id (principal) van de identiteit:

      Schermopname van de pagina Identiteit van de logische app Verbruik met het geselecteerde tabblad Systeem toegewezen.

    • Gebruiker toegewezen

      1. Selecteer de identiteit:

        Schermopname van de pagina Identiteit van de logische app Consumption met het geselecteerde tabblad Gebruiker toegewezen.

      2. Kopieer de object-id (principal) van de identiteit:

        Schermopname van de pagina Overzicht van door de gebruiker toegewezen identiteit van de logische app consumption, waarbij de object-id (principal) is geselecteerd.

Zoek de toepassings-id voor de Azure Enterprise-toepassing die is gekoppeld aan uw beheerde identiteit

Wanneer u een beheerde identiteit inschakelt voor uw logische app-resource, maakt Azure automatisch een gekoppelde Azure Enterprise-toepassing met dezelfde naam. U moet nu de bijbehorende ondernemingstoepassing zoeken en de bijbehorende toepassings-id kopiëren. Later gebruikt u deze toepassings-id om een id-provider voor uw functie-app toe te voegen door een app-registratie te maken.

  1. Zoek en open uw Microsoft Entra-tenant in Azure Portal.

  2. Selecteer Enterprise-toepassingen in het tenantmenu onder Beheren.

  3. Voer op de pagina Alle toepassingen in het zoekvak de object-id voor uw beheerde identiteit in. Zoek in de resultaten de overeenkomende bedrijfstoepassing en kopieer de toepassings-id:

    Schermopname van de pagina Microsoft Entra-tenant met de naam Alle toepassingen, met de object-id van de bedrijfstoepassing in het zoekvak en de geselecteerde overeenkomende toepassings-id.

  4. Gebruik nu de gekopieerde toepassings-id om een id-provider toe te voegen aan uw functie-app.

Id-provider toevoegen voor uw functie-app (alleen werkstromen voor verbruik)

Nu u de tenant-id en de toepassings-id hebt, kunt u uw functie-app instellen voor het gebruik van Microsoft Entra-verificatie door een id-provider toe te voegen en een app-registratie te maken.

  1. Open uw functie-app in Azure Portal.

  2. Selecteer verificatie in het menu van de functie-app onder Instellingen en selecteer vervolgens Id-provider toevoegen.

    Schermopname van het menu van de functie-app met de pagina Verificatie en de geselecteerde optie Id-provider toevoegen.

  3. Selecteer Microsoft in het deelvenster Een id-provider toevoegen, onder Basisbeginselen, in de lijst met id-providers.

  4. Selecteer onder App-registratie voor app-registratietype de optie Geef de details van een bestaande app-registratie op en voer de waarden in die u eerder hebt opgeslagen.

    Eigenschappen Vereist Weergegeven als Beschrijving
    Toepassings-id (client) Ja <toepassings-id> De unieke id die moet worden gebruikt voor deze app-registratie. Gebruik voor dit voorbeeld de toepassings-id die u hebt gekopieerd voor de ondernemingstoepassing die is gekoppeld aan uw beheerde identiteit.
    Client secret Optioneel, maar aanbevolen <clientgeheim> De geheime waarde die de app gebruikt om de identiteit te bewijzen bij het aanvragen van een token. Het clientgeheim wordt gemaakt en opgeslagen in de configuratie van uw app als een site-sticky toepassingsinstelling met de naam MICROSOFT_PROVIDER_AUTHENTICATION_SECRET.

    - Zorg ervoor dat u geheimen regelmatig roteert en veilig opslaat. U kunt bijvoorbeeld uw geheimen beheren in Azure Key Vault, waar u een beheerde identiteit kunt gebruiken om de sleutel op te halen zonder de waarde beschikbaar te maken voor een onbevoegde gebruiker. U kunt deze instelling bijwerken om Key Vault-verwijzingen te gebruiken.

    - Als u een waarde voor het clientgeheim opgeeft, gebruiken aanmeldingsbewerkingen de hybride stroom, waarbij zowel toegangs- als vernieuwingstokens worden geretourneerd.

    - Als u geen clientgeheim opgeeft, gebruiken aanmeldingsbewerkingen de impliciete toekenningsstroom OAuth 2.0. Deze methode retourneert alleen een id-token of toegangstoken. Deze tokens worden verzonden door de provider en opgeslagen in het EasyAuth-tokenarchief.

    Belangrijk: Vanwege beveiligingsrisico's is de impliciete toekenningsstroom geen geschikte verificatiemethode meer. Gebruik in plaats daarvan de autorisatiecodestroom met Proof Key for Code Exchange (PKCE) of spa-autorisatiecodes (Single Page Application).
    URL van verlener Nee <authentication-endpoint-URL>/<Microsoft-Entra-tenant-ID>/v2.0 Met deze URL worden gebruikers omgeleid naar de juiste Microsoft Entra-tenant en worden de juiste metagegevens gedownload om de juiste token-ondertekeningssleutels en claimwaarde voor tokenverleners te bepalen. Voor apps die gebruikmaken van Azure AD v1 laat u /v2.0 weg uit de URL.

    Gebruik voor dit scenario de volgende URL: https://sts.windows.net/<Microsoft-Entra-tenant-ID>
    Toegestane tokendoelpunten Nee <application-ID-URI> De URI van de toepassings-id (resource-id) voor de functie-app. Voor een cloud- of server-app waarvoor u verificatietokens van een web-app wilt toestaan, voegt u de URI voor de toepassings-id voor de web-app toe. De geconfigureerde client-id wordt altijd impliciet beschouwd als een toegestane doelgroep.

    Voor dit scenario is https://management.azure.comde waarde . Later kunt u dezelfde URI in de eigenschap Doelgroep gebruiken wanneer u de functieactie instelt in uw werkstroom om de beheerde identiteit te gebruiken.

    Belangrijk: de URI van de toepassings-id (resource-id) moet exact overeenkomen met de waarde die microsoft Entra-id verwacht, inclusief eventuele vereiste afsluitende slashes.

    Op dit moment ziet uw versie er ongeveer als volgt uit:

    Schermopname van app-registratie voor uw logische app en id-provider voor uw functie-app.

    Als u uw functie-app voor het eerst instelt met een id-provider, wordt ook de sectie App Service-verificatie-instellingen weergegeven. Deze opties bepalen hoe uw functie-app reageert op niet-geverifieerde aanvragen. Met de standaardselectie worden alle aanvragen om u aan te melden bij de nieuwe id-provider omgeleid. U kunt dit gedrag nu aanpassen of deze instellingen later aanpassen vanaf de hoofdpagina Verificatie door Bewerken naast verificatie-instellingen te selecteren. Raadpleeg de verificatiestroom - Verificatie en autorisatie in Azure-app Service en Azure Functions voor meer informatie over deze opties.

    Anders kunt u doorgaan met de volgende stap.

  5. Selecteer Toevoegen om het maken van de app-registratie te voltooien.

    Wanneer u klaar bent, worden op de pagina Verificatie nu de id-provider en de toepassings-id (client)-id van de app-registratie vermeld. Uw functie-app kan nu deze app-registratie gebruiken voor verificatie.

  6. Kopieer de app-id van de app-registratie (client) voor later gebruik in de eigenschap Doelgroep van de Azure Functions-actie voor uw werkstroom.

    Schermopname van de nieuwe id-provider voor de functie-app.

  7. Ga terug naar de ontwerpfunctie en volg de stappen voor het verifiëren van toegang met de beheerde identiteit met behulp van de ingebouwde Azure Functions-actie.

Volgende stappen