Vytvoření a spuštění kódu z pracovních postupů v Azure Logic Apps pomocí Azure Functions

Platí pro: Azure Logic Apps (Consumption + Standard)

Pokud chcete spustit kód, který provádí určitou úlohu v pracovním postupu aplikace logiky, můžete vytvořit funkci pomocí Azure Functions. Tato služba pomáhá vytvářet funkce Node.js, C# a F#, takže nemusíte vytvářet kompletní aplikaci nebo infrastrukturu pro spouštění kódu. Azure Functions poskytuje bezserverovou architekturu v cloudu a je užitečná pro provádění určitých úloh, například:

  • Rozšíření chování aplikace logiky pomocí funkcí v Node.js nebo C#.
  • Provádění výpočtů v pracovním postupu aplikace logiky
  • Použití rozšířeného formátování nebo výpočetních polí v pracovních postupech aplikace logiky

Tento návod ukazuje, jak volat funkci Azure z pracovního postupu aplikace logiky. Pokud chcete spouštět fragmenty kódu bez použití služby Azure Functions, přečtěte si téma Přidání a spuštění vloženého kódu. Pokud chcete volat a aktivovat pracovní postup aplikace logiky z funkce, musí pracovní postup začínat triggerem, který poskytuje volatelný koncový bod. Pracovní postup můžete například spustit pomocí triggeru HTTP, Request, Azure Queues nebo Event Grid . Uvnitř funkce odešlete požadavek HTTP POST na adresu URL triggeru a uveďte datovou část, kterou má tento pracovní postup zpracovat. Další informace najdete v pracovních postupech volání, triggeru nebo vnoření aplikací logiky.

Omezení

  • Funkci můžete vytvořit přímo z pracovního postupu aplikace logiky Consumption, ale ne ze standardního pracovního postupu aplikace logiky. Funkce ale můžete vytvářet jinými způsoby. Další informace najdete v tématu Vytváření funkcí z pracovních postupů aplikace logiky.

  • Ověřování volání funkcí Azure s využitím spravované identity s ověřováním Microsoft Entra podporují pouze pracovní postupy Consumption. Standardní pracovní postupy se v současné době nepodporují v části o tom, jak povolit ověřování pro volání funkcí.

  • Azure Logic Apps nepodporuje používání Azure Functions s povolenými sloty nasazení. I když tento scénář může někdy fungovat, toto chování je nepředvídatelné a může vést k problémům s autorizací, když se pracovní postup pokusí volat funkci Azure Functions.

Požadavky

  • Účet Azure a předplatné. Pokud předplatné nemáte, zaregistrujte si bezplatný účet Azure.

  • Prostředek aplikace funkcí Azure, což je kontejner funkce, kterou můžete vytvořit pomocí Azure Functions, společně s funkcí, kterou chcete použít.

    Pokud aplikaci funkcí nemáte, vytvořte nejdřív aplikaci funkcí. Pak můžete funkci vytvořit mimo pracovní postup aplikace logiky pomocí Azure Functions na webu Azure Portal nebo z pracovního postupu aplikace logiky v návrháři.

  • Při práci s prostředky aplikace logiky platí stejné požadavky na aplikace funkcí i funkce, stávající nebo nové:

    • Prostředek aplikace funkcí a prostředek aplikace logiky musí používat stejné předplatné Azure.

    • Nové aplikace funkcí musí jako zásobník modulu runtime používat .NET nebo JavaScript. Když do existujících aplikací funkcí přidáte novou funkci, můžete vybrat jazyk C# nebo JavaScript.

    • Vaše funkce používá šablonu triggeru HTTP.

      Šablona triggeru HTTP může přijímat obsah, který má application/json typ z pracovního postupu vaší aplikace logiky. Když do pracovního postupu přidáte funkci, návrhář zobrazí vlastní funkce vytvořené z této šablony v rámci vašeho předplatného Azure.

    • Vaše funkce nepoužívá vlastní trasy, pokud jste nedefinovali definici OpenAPI (soubor Swagger).

    • Pokud máte pro funkci definici OpenAPI, návrhář pracovního postupu poskytuje bohatší prostředí při práci s parametry funkce. Než pracovní postup aplikace logiky najde a bude mít přístup k funkcím, které mají definice OpenAPI, nastavte aplikaci funkcí podle následujících kroků.

  • Pokud chcete postupovat podle příkladu v tomto průvodci postupy, budete potřebovat prostředek aplikace logiky Consumption a pracovní postup, který má jako první krok aktivační událost. I když pro svůj scénář můžete použít libovolný trigger, v tomto příkladu se používá trigger Office 365 Outlook s názvem Při přijetí nového e-mailu.

Vyhledání funkcí s popisy OpenAPI

Pro bohatší prostředí při práci s parametry funkce v návrháři pracovního postupu vygenerujte definici OpenAPI nebo soubor Swagger pro vaši funkci. Pokud chcete nastavit aplikaci funkcí, aby aplikace logiky našla a používala funkce s popisy Swaggeru, postupujte takto:

  1. Na webu Azure Portal otevřete aplikaci funkcí. Ujistěte se, že je aplikace funkcí aktivně spuštěná.

  2. Nastavte sdílení prostředků mezi zdroji (CORS) pro vaši aplikaci funkcí, aby bylo možné všechny zdroje povolit pomocí následujících kroků:

    1. V nabídce prostředků aplikace funkcí v části ROZHRANÍ API vyberte CORS.

      Snímek obrazovky s webem Azure Portal, nabídkou prostředků aplikace funkcí a vybranou možností CORS

    2. V části CORS přidejte zástupný znak hvězdičky (*), ale odeberte všechny ostatní původy v seznamu a vyberte Uložit.

      Snímek obrazovky s webem Azure Portal, podoknem CORS a zástupným znakem *zadaným v části Povolené zdroje

Přístup k hodnotám vlastností uvnitř požadavků HTTP

Funkce Webhooku mohou přijímat požadavky HTTP jako vstupy a předávat tyto požadavky jiným funkcím. Přestože má například Azure Logic Apps funkce, které převádějí hodnoty DateTime, tato základní ukázková funkce JavaScriptu ukazuje, jak můžete přistupovat k vlastnosti uvnitř objektu požadavku, který je předán funkci, a provádět operace s touto hodnotou vlastnosti. Pro přístup k vlastnostem uvnitř objektů používá tento příklad operátor tečky (.):

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

Tady je postup, který se stane uvnitř této funkce:

  1. Funkce vytvoří proměnnou data a přiřadí body objekt uvnitř objektu request této proměnné. Funkce pomocí operátoru tečka (.) odkazuje na body objekt uvnitř objektu request :

    var data = request.body;
    
  2. Funkce teď může přistupovat k date vlastnosti prostřednictvím data proměnné a převést tuto hodnotu vlastnosti z typu DateTime na Typ DateString voláním ToDateString() funkce. Funkce také vrátí výsledek prostřednictvím body vlastnosti v odpovědi funkce:

    body: data.date.ToDateString();
    

Teď, když jste vytvořili funkci v Azure, postupujte podle kroků pro přidání funkcí do aplikací logiky.

Vytváření funkcí z pracovních postupů aplikace logiky (pouze pracovní postupy Consumption)

Funkce můžete vytvářet přímo z pracovního postupu Consumption pomocí integrované akce Azure Functions v návrháři pracovního postupu, ale tuto metodu můžete použít pouze pro funkce napsané v JavaScriptu. V případě jiných jazyků můžete vytvářet funkce prostřednictvím prostředí Azure Functions na webu Azure Portal. Než ale budete moct funkci vytvořit v Azure, musíte už mít prostředek aplikace funkcí, což je kontejner pro vaše funkce. Pokud aplikaci funkcí nemáte, vytvořte ji jako první. Další informace najdete v tématu Vytvoření první funkce na webu Azure Portal.

Standardní pracovní postupy aktuálně nepodporují tuto možnost pro vytvoření funkce z pracovního postupu, ale funkci můžete vytvořit následujícími způsoby a pak tuto funkci volat z pracovního postupu standardní aplikace logiky pomocí operace Azure Functions s názvem Volání funkce Azure.

  1. Na webu Azure Portal otevřete aplikaci logiky Consumption a pracovní postup v návrháři.

  2. V návrháři postupujte podle těchto obecných kroků a přidejte akci Azure Functions s názvem Zvolit funkci Azure.

  3. V seznamu aplikací funkcí, který se zobrazí, vyberte svou aplikaci funkcí. V seznamu akcí, který se zobrazí, vyberte akci s názvem Vytvořit novou funkci.

    Snímek obrazovky znázorňující výběr operace s možností Vytvořit novou funkci

  4. V editoru definic funkcí definujte funkci:

    1. Do pole Název funkce zadejte název funkce.

    2. Do pole Kód přidejte kód do šablony funkce, včetně odpovědi a datové části, kterou chcete vrátit do aplikace logiky po dokončení spuštění funkce. Až budete hotovi, vyberte Vytvořit, například:

    Snímek obrazovky znázorňující editor pro vytváření funkcí s definicí funkce šablony

    V kódu šablony odkazuje objekt na zprávu, context že váš pracovní postup odesílá prostřednictvím vlastnosti Text požadavku v pozdějším kroku. Pokud chcete získat přístup k vlastnostem objektu context z vaší funkce, použijte následující syntaxi:

    context.body.<property-name>

    Pokud například chcete odkazovat na content vlastnost uvnitř objektu context , použijte následující syntaxi:

    context.body.content

    Kód šablony obsahuje také proměnnou input , která ukládá hodnotu z parametru data , aby vaše funkce s danou hodnotou mohl provádět operace. Uvnitř javascriptových funkcí data je proměnná také zkratkou pro context.body.

    Poznámka:

    Tato body vlastnost se vztahuje na context objekt a není stejná jako token Body z výstupu akce, který můžete také předat funkci.

  5. Do pole Text požadavku zadejte vstup funkce, který musí být formátován jako objekt JSON (JavaScript Object Notation).

    Tento vstup je kontextový objekt nebo zpráva, kterou vaše aplikace logiky odesílá do vaší funkce. Když kliknete do pole Text požadavku, zobrazí se seznam dynamického obsahu, abyste mohli vybrat tokeny pro výstupy z předchozích kroků. Tento příklad určuje, že datová část kontextu obsahuje vlastnost s názvem contentFrom token hodnotu z triggeru e-mailu.

    Snímek obrazovky znázorňující funkci a vlastnost Text požadavku s ukázkovou datovou částí objektu kontextu

    Kontextový objekt se tady nepřetypuje jako řetězec, takže se obsah objektu přidá přímo do datové části JSON. Pokud ale kontextový objekt není token JSON, který předává řetězec, objekt JSON nebo pole JSON, zobrazí se chyba. Takže pokud tento příklad místo toho použil token Received Time , můžete kontextový objekt přetypovat jako řetězec přidáním dvojitých uvozovek, například:

    Snímek obrazovky znázorňující vlastnost Text požadavku, která přetypuje objekt jako řetězec

  6. Pokud chcete zadat další podrobnosti, například metodu pro použití, hlavičky požadavku nebo parametry dotazu nebo ověřování, otevřete seznam přidat nový parametr a vyberte požadované možnosti. U ověřování se vaše možnosti liší v závislosti na vybrané funkci. Další informace najdete v tématu Povolení ověřování pro funkce.

Přidání existujících funkcí do pracovních postupů aplikace logiky (Consumption + Standardní pracovní postupy)

Pokud chcete volat existující funkce z pracovního postupu aplikace logiky, můžete přidat funkce jako jakoukoli jinou akci v návrháři.

  1. Na webu Azure Portal otevřete pracovní postup aplikace logiky Consumption v návrháři.

  2. V návrháři postupujte podle těchto obecných kroků a přidejte akci Azure Functions s názvem Zvolit funkci Azure.

  3. V seznamu aplikací funkcí vyberte svou aplikaci funkcí. V seznamu funkcí, který se zobrazí, vyberte svou funkci.

    Snímek obrazovky se službou Consumption zobrazující vybranou aplikaci funkcí a funkci

    U funkcí s definicemi rozhraní API (popisy Swaggeru) a jsou nastavené tak, aby aplikace logiky tyto funkce našla a měla k těmto funkcím přístup, můžete vybrat akce Swaggeru.

    Snímek obrazovky se službou Consumption zobrazující vybranou aplikaci funkcí a pak v části Akce Swaggeru vybranou funkci

  4. Do pole Text požadavku zadejte vstup funkce, který musí být formátován jako objekt JSON (JavaScript Object Notation).

    Tento vstup je kontextový objekt nebo zpráva, kterou vaše aplikace logiky odesílá do vaší funkce. Když kliknete do pole Text požadavku, zobrazí se seznam dynamického obsahu, abyste mohli vybrat tokeny pro výstupy z předchozích kroků. Tento příklad určuje, že datová část kontextu obsahuje vlastnost s názvem contentFrom token hodnotu z triggeru e-mailu.

    Snímek obrazovky se službou Consumption zobrazující funkci s příkladem textu požadavku – datová část objektu kontextu

    Kontextový objekt se tady nepřetypuje jako řetězec, takže se obsah objektu přidá přímo do datové části JSON. Pokud ale kontextový objekt není token JSON, který předává řetězec, objekt JSON nebo pole JSON, zobrazí se chyba. Takže pokud tento příklad místo toho použil token Received Time , můžete kontextový objekt přetypovat jako řetězec přidáním dvojitých uvozovek:

    Snímek obrazovky se službou Consumption zobrazující funkci s příkladem Text požadavku, který přetypuje objekt jako řetězec

  5. Pokud chcete zadat další podrobnosti, například metodu pro použití, hlavičky požadavku, parametry dotazu nebo ověřování, otevřete seznam Přidat nový parametr a vyberte požadované možnosti. U ověřování se vaše možnosti liší v závislosti na vybrané funkci. Další informace najdete v tématu Povolení ověřování pro funkce.

Povolení ověřování pro volání funkcí (pouze pracovní postupy Consumption)

Pracovní postup Consumption může ověřovat volání funkcí a přístup k prostředkům chráněným ID Microsoft Entra pomocí spravované identity (dříve označované jako Identita spravované služby nebo MSI). Tato spravovaná identita může ověřovat přístup bez nutnosti přihlašovat se a zadávat přihlašovací údaje nebo tajné kódy. Azure tuto identitu spravuje za vás a pomáhá zabezpečit vaše přihlašovací údaje, protože nemusíte zadávat ani vyměňovat tajné kódy. Identitu přiřazenou systémem nebo ručně vytvořenou identitu přiřazenou uživatelem můžete nastavit na úrovni prostředku aplikace logiky. Funkce, která je volána z pracovního postupu, může pro ověřování použít stejnou identitu.

Poznámka:

V současné době podporují ověřování pro volání funkcí Azure pouze pracovní postupy Consumption využívající spravovanou identitu a ověřování Microsoft Entra. Standardní pracovní postupy v současné době tuto podporu nezahrnují při použití konektoru Azure Functions.

Další informace najdete v následující dokumentaci:

Pokud chcete nastavit aplikaci funkcí a funkci, aby mohly používat spravovanou identitu aplikace logiky Consumption, postupujte takto:

  1. Povolte a nastavte spravovanou identitu aplikace logiky.

  2. Nastavte funkci pro anonymní ověřování.

  3. Vyhledejte požadované hodnoty pro nastavení ověřování Microsoft Entra.

  4. Vytvořte registraci aplikace pro vaši aplikaci funkcí.

Nastavení funkce pro anonymní ověřování (jenom pracovní postupy Consumption)

Aby vaše funkce používala spravovanou identitu aplikace logiky Consumption, musíte nastavit úroveň ověřování vaší funkce na anonymní. V opačném případě pracovní postup vyvolá chybu BadRequest .

  1. Na webu Azure Portal vyhledejte a vyberte svou aplikaci funkcí.

    Následující kroky používají ukázkovou aplikaci funkcí s názvem FabrikamFunctionApp.

  2. V nabídce prostředků aplikace funkcí v části Vývojové nástroje vyberte Rozšířené nástroje>Go.

    Snímek obrazovky zobrazující nabídku aplikace funkcí s vybranou možností Upřesnit nástroje a Přejít

  3. Po otevření stránky Služby Kudu v záhlaví webu Kudu v nabídce Konzola ladění vyberte CMD.

    Snímek obrazovky zobrazující stránku Služby Kudu s otevřenou nabídkou Konzola ladění a vybranou možností CMD

  4. Jakmile se zobrazí další stránka, vyberte v seznamu složek web>wwwroot>your-function.

    Následující kroky používají ukázkovou funkci s názvem FabrikamAzureFunction.

    Snímek obrazovky zobrazující seznam složek s vybranou funkcí

  5. Otevřete soubor function.json pro úpravy.

    Snímek obrazovky zobrazující soubor function.json s vybraným příkazem upravit

  6. V objektu bindings zkontrolujte, zda existuje vlastnost authLevel . Pokud vlastnost existuje, nastavte hodnotu vlastnosti na anonymní. V opačném případě přidejte danou vlastnost a nastavte hodnotu.

    Snímek obrazovky znázorňující objekt

  7. Až budete hotovi, uložte nastavení. Pokračujte k další části.

Vyhledání požadovaných hodnot pro nastavení ověřování Microsoft Entra (pouze pracovní postupy Consumption)

Než budete moct aplikaci funkcí nastavit tak, aby používala ověřování Microsoft Entra, musíte pomocí kroků v této části najít a uložit následující hodnoty.

  1. Vyhledejte ID objektu (objektu zabezpečení) pro spravovanou identitu vaší aplikace logiky.
  2. Vyhledejte ID tenanta pro vaše ID Microsoft Entra.

Vyhledání ID objektu pro spravovanou identitu vaší aplikace logiky

  1. Jakmile má vaše aplikace logiky Consumption povolenou spravovanou identitu, vyberte v nabídce aplikace logiky v části Nastavení možnost Identita a pak vyberte Přiřazený systém nebo Přiřazený uživatel.

    • Přiřazený systém

      Pro identitu přiřazenou systémem zkopírujte ID objektu identity, například:

      Snímek obrazovky znázorňující podokno Identita aplikace logiky Consumption s vybranou kartou Přiřazený systém

    • Přiřazený uživatel

      1. Pro identitu přiřazenou uživatelem vyberte identitu a vyhledejte ID klienta, například:

        Snímek obrazovky znázorňující podokno Identita aplikace logiky Consumption s vybranou kartou Přiřazený uživatel

      2. V podokně Přehled spravované identity najdete ID klienta identity, například:

        Snímek obrazovky znázorňující podokno Přehled identity přiřazené uživatelem s vybraným ID klienta

Vyhledání ID tenanta pro vaše ID Microsoft Entra

Pokud chcete najít ID tenanta Microsoft Entra, spusťte příkaz PowerShellu s názvem Get-AzureAccount nebo na webu Azure Portal, postupujte takto:

  1. Na webu Azure Portal otevřete tenanta Microsoft Entra. Tento postup používá jako příklad tenanta Fabrikam .

  2. V nabídce tenanta Microsoft Entra v části Spravovat vyberte Vlastnosti.

  3. Zkopírujte a uložte ID tenanta pro pozdější použití, například:

    Snímek obrazovky s podoknem Vlastnosti ID Microsoft Entra s vybraným tlačítkem pro kopírování ID tenanta

Vytvoření registrace aplikace pro vaši aplikaci funkcí (pouze pracovní postupy Consumption)

Jakmile najdete ID objektu pro spravovanou identitu a ID tenanta vaší aplikace logiky Consumption pro vaše ID Microsoft Entra, můžete aplikaci funkcí nastavit tak, aby používala ověřování Microsoft Entra vytvořením registrace aplikace.

  1. Na webu Azure Portal otevřete aplikaci funkcí.

  2. V nabídce aplikace funkcí v části Nastavení vyberte Ověřování a pak vyberte Přidat zprostředkovatele identity.

    Snímek obrazovky s nabídkou aplikace funkcí s vybraným podoknem Ověřování a možností Přidat zprostředkovatele identity

  3. V podokně Přidat zprostředkovatele identity v části Základy v seznamu zprostředkovatele identity vyberte Microsoft.

  4. V části Registrace aplikace jako typ registrace aplikace vyberte Zadat podrobnosti o existující registraci aplikace a zadejte hodnoty, které jste dříve uložili.

    Vlastnost Požaduje se Hodnota Popis
    ID aplikace (klienta) Ano <object-ID> Jedinečný identifikátor, který se má použít pro tuto registraci aplikace. V tomto scénáři použijte ID objektu ze spravované identity vaší aplikace logiky.
    Tajný klíč klienta Volitelné, ale doporučené <tajný klíč klienta> Hodnota tajného kódu, kterou aplikace používá k prokázání své identity při vyžádání tokenu. Tajný klíč klienta se vytvoří a uloží v konfiguraci vaší aplikace jako nastavení aplikace typu slot-sticky s názvem MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Pokud chcete místo toho spravovat tajný klíč ve službě Azure Key Vault, můžete toto nastavení později aktualizovat tak, aby používalo odkazy na službu Key Vault.

    – Pokud zadáte hodnotu tajného klíče klienta, operace přihlašování používají hybridní tok a vrací přístup i obnovovací tokeny.

    – Pokud nezadáte tajný klíč klienta, operace přihlašování používají tok implicitního udělení OAuth 2.0, který vrací pouze token ID.

    Tyto tokeny posílají poskytovatel a ukládají se v úložišti tokenů EasyAuth.
    Adresa URL vystavitele No <authentication-endpoint-URL>/<Azure-AD-tenant-ID>/v2.0 Tato adresa URL přesměruje uživatele na správného tenanta Microsoft Entra a stáhne příslušná metadata k určení odpovídajících podpisových klíčů tokenu a hodnoty deklarace identity vystavitele tokenu. Pro aplikace, které používají Azure AD v1, vynecháte /v2.0 z adresy URL.

    V tomto scénáři použijte následující adresu URL: https://sts.windows.net/<Azure-AD-tenant-ID>
    Povolené cílové skupiny tokenů No <application-ID-URI> Identifikátor URI ID aplikace (ID prostředku) pro aplikaci funkcí. Pro cloudovou nebo serverovou aplikaci, ve které chcete povolit ověřovací tokeny z webové aplikace, přidejte identifikátor URI ID aplikace pro webovou aplikaci. Nakonfigurované ID klienta se vždy implicitně považuje za povolenou cílovou skupinu.

    V tomto scénáři je https://management.azure.comhodnota . Později můžete použít stejný identifikátor URI ve vlastnosti Audience při nastavování akce funkce v pracovním postupu pro použití spravované identity.

    Důležité: Identifikátor URI ID aplikace (ID prostředku) musí přesně odpovídat hodnotě, kterou očekává Microsoft Entra ID, včetně všech požadovaných koncových lomítek.

    V tomto okamžiku vypadá vaše verze podobně jako v tomto příkladu:

    Snímek obrazovky znázorňující registraci aplikace logiky a zprostředkovatele identity pro vaši aplikaci funkcí

    Pokud aplikaci funkcí nastavujete u zprostředkovatele identity poprvé, zobrazí se také část Nastavení ověřování služby App Service. Tyto možnosti určují, jak vaše aplikace funkcí reaguje na neověřené požadavky. Výchozí výběr přesměruje všechny požadavky na přihlášení pomocí nového zprostředkovatele identity. Toto chování můžete nyní přizpůsobit nebo později upravit tato nastavení na hlavní stránce Ověřování výběrem možnosti Upravit vedle nastavení ověřování. Další informace o těchto možnostech najdete v toku ověřování – Ověřování a autorizace ve službě Aplikace Azure a Azure Functions.

    V opačném případě můžete pokračovat dalším krokem.

  5. Pokud chcete dokončit vytváření registrace aplikace, vyberte Přidat.

    Až budete hotovi, na stránce Ověřování se teď zobrazí seznam zprostředkovatele identity a ID aplikace (ID klienta) pro registraci aplikace. Vaše aplikace funkcí teď může tuto registraci aplikace použít k ověřování.

  6. Zkopírujte ID aplikace (ID klienta) pro funkci, která se použije v vlastnosti Cílové skupiny později v pracovním postupu.

  7. Vraťte se do návrháře a postupujte podle kroků pro ověření přístupu pomocí spravované identity pomocí integrované akce Azure Functions.

Další kroky