Volání Azure Functions z pracovních postupů v Azure Logic Apps
Platí pro: Azure Logic Apps (Consumption + Standard)
Pokud chcete spustit kód, který provádí určitou úlohu v pracovním postupu aplikace logiky, nemusíte vytvářet úplnou aplikaci ani infrastrukturu. Místo toho můžete vytvořit a volat funkci Azure. Azure Functions poskytuje bezserverovou architekturu v cloudu a schopnost provádět následující úlohy:
- Rozšiřte chování pracovního postupu spuštěním funkcí vytvořených pomocí Node.js nebo jazyka C#.
- Provádění výpočtů v pracovním postupu
- Použití rozšířeného formátování nebo výpočetních polí v pracovním postupu
Tento návod ukazuje, jak volat existující funkci Azure z pracovního postupu Consumption nebo Standard. Pokud chcete spustit kód bez použití služby Azure Functions, projděte si následující dokumentaci:
- Spouštění fragmentů kódu v pracovních postupech
- Vytvoření a spuštění kódu rozhraní .NET Framework z pracovních postupů Standard
Omezení
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, který obsahuje jednu nebo více funkcí Azure.
Prostředek aplikace funkcí a prostředek aplikace logiky musí používat stejné předplatné Azure.
Prostředek aplikace funkcí musí jako zásobník modulu runtime používat .NET nebo Node.js .
Když do aplikace funkcí přidáte novou funkci, můžete vybrat jazyk C# nebo JavaScript.
Funkce Azure, kterou chcete volat. Tuto funkci můžete vytvořit pomocí následujících nástrojů:
Vaše funkce musí používat š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.Kód funkce musí po dokončení funkce obsahovat odpověď a datovou část, kterou chcete vrátit do pracovního postupu. Objekt
context
odkazuje na zprávu, že váš pracovní postup odesílá prostřednictvím parametru akce Azure Functions s názvem Text požadavku dále v této příručce.Tato příručka používá následující ukázkovou funkci, která má název 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(); }
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 v objektucontext
, použijte následující syntaxi:context.body.content
Tento kód obsahuje také proměnnou
input
, která ukládá hodnotu z parametrudata
, aby vaše funkce s touto hodnotou mohl provádět operace. V rámci funkcídata
Jazyka JavaScript je proměnná také zkratkou procontext.body
.Poznámka:
Tato
body
vlastnost se vztahuje nacontext
objekt a není stejná jako token Body ve výstupu akce, který můžete také předat funkci.Vaše funkce nemůže používat vlastní trasy, pokud nenadefinujete definici OpenAPI.
Pokud máte definici OpenAPI pro funkci, návrhář pracovního postupu vám při práci s parametry funkce poskytuje bohatší prostředí. Než bude váš pracovní postup moct najít a získat přístup k funkcím, které mají definice OpenAPI, nastavte aplikaci funkcí pomocí následujícího postupu.
Pracovní postup aplikace logiky Consumption nebo Standard, který začíná libovolným triggerem.
Příklady v této příručce používají trigger Office 365 Outlook s názvem Při přijetí nového e-mailu.
Pokud chcete vytvořit a volat funkci Azure, která volá jiný pracovní postup, ujistěte se, že sekundární pracovní postup začíná triggerem, který poskytuje volatelný koncový bod.
Můžete například spustit pracovní postup pomocí obecného triggeru HTTP nebo požadavku nebo můžete použít aktivační událost založenou na službě, jako jsou fronty Azure nebo Event Grid. Uvnitř funkce odešlete požadavek HTTP POST na adresu URL triggeru a uveďte datovou část, kterou má sekundární pracovní postup zpracovat. Další informace najdete v tématu Volání, trigger nebo vnoření pracovních postupů aplikace logiky.
Tipy pro práci s funkcemi Azure
Vyhledání funkcí s definicemi OpenAPI
Pokud chcete nastavit aplikaci funkcí tak, aby váš pracovní postup mohl najít a používat funkce s definicemi OpenAPI, postupujte takto:
Na webu Azure Portal otevřete aplikaci funkcí. Ujistěte se, že je aplikace funkcí aktivně spuštěná.
V aplikaci funkcí nastavte sdílení prostředků mezi zdroji (CORS), aby bylo možné všechny zdroje povolit pomocí následujících kroků:
Přístup k hodnotám vlastností uvnitř požadavků HTTP
Funkce založené na webhoocích 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 HTTP, 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:
Funkce vytvoří proměnnou
data
a přiřadíbody
objekt, který je uvnitřrequest
objektu, proměnné. Funkce pomocí operátoru tečka (.) odkazuje nabody
objekt uvnitř objekturequest
:var data = request.body;
Funkce teď může přistupovat k
date
vlastnosti prostřednictvímdata
proměnné a převést hodnotu vlastnosti z typu DateTime na Typ DateString volánímToDateString()
funkce. Funkce také vrátí výsledek prostřednictvímbody
vlastnosti v odpovědi funkce:body: data.date.ToDateString();
Po vytvoření funkce v Azure postupujte podle kroků a přidejte do pracovního postupu funkci Azure.
Předání parametrů identifikátoru URI do funkce
Pokud potřebujete funkci předat parametr URI, můžete použít parametry dotazu v adrese URL koncového bodu funkce.
V návrháři pracovního postupu otevřeného pro vaši aplikaci logiky a otevřené podokno s informacemi o funkcích v seznamu Upřesnit parametry vyberte Dotazy.
Zobrazí se tabulka, kde můžete zadat vstup parametru jako páry klíč-hodnota.
Zadejte pár klíč-hodnota pro parametr, například:
Přidání funkce do pracovního postupu (Pracovní postupy Consumption + Standard)
Pokud chcete volat funkci Azure z pracovního postupu, můžete přidat funkce jako jakoukoli jinou akci v návrháři.
Na webu Azure Portal otevřete pracovní postup aplikace logiky Consumption v návrháři.
V návrháři postupujte podle těchto obecných kroků a přidejte akci Azure Functions s názvem Zvolit funkci Azure.
V podokně Přidat akci postupujte takto:
V seznamu aplikací funkcí vyberte svou aplikaci funkcí, vyberte ji a pak vyberte Přidat akci, například:
Po zobrazení informačního pole funkce postupujte takto:
V textu požadavku zadejte vstup vaší funkce, který musí použít formát objektu JSON (JavaScript Object Notation), například:
{"context": <selected-input> }
Tento vstup je datová část objektu kontextu nebo zpráva, kterou pracovní postup odesílá do vaší funkce.
Pokud chcete vybrat tokeny, které představují výstupy z předchozích kroků, vyberte v poli Text požadavku a pak vyberte možnost pro otevření seznamu dynamického obsahu (ikona blesku).
Pokud chcete vytvořit výraz, vyberte v poli Text požadavku a pak vyberte možnost pro otevření editoru výrazů (ikona vzorce).
Následující příklad určuje objekt JSON s atributem
content
a token představující výstup z e-mailu trigger jako hodnotu Text požadavku:Kontextový objekt se tady nepřetypuje jako řetězec, takže se obsah objektu přidá přímo do datové části JSON. Tady je úplný příklad:
Pokud zadáte jiný kontextový objekt než token JSON, který předává řetězec, objekt JSON nebo pole JSON, zobrazí se chyba. Kontextový objekt však můžete přetypovat jako řetězec tak, že token uzavřete do uvozovek ("), například pokud chcete použít token Přijatý čas :
Pokud chcete zadat další podrobnosti, například metodu pro použití, hlavičky požadavků, parametry dotazu nebo ověřování, otevřete seznam rozšířených parametrů a vyberte požadované parametry. 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í Azure (pouze pracovní postupy Consumption)
Pracovní postup Consumption může použít spravovanou identitu k ověření volání funkce Azure a přístupu k prostředkům chráněným ID Microsoft Entra. Spravovaná identita může ověřovat přístup, aniž byste se museli přihlašovat 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 Azure, která je volána z pracovního postupu, může pro ověřování použít stejnou spravovanou identitu.
Poznámka:
Ověřování volání funkce Azure pomocí spravované identity a ověřování Microsoft Entra podporují pouze pracovní postupy Consumption. Standardní pracovní postupy v současné době tuto podporu nezahrnují, když k volání funkce Azure použijete akci.
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:
Vyhledejte požadované hodnoty pro nastavení ověřování Microsoft Entra.
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 anonymous
hodnotu . V opačném případě pracovní postup vyvolá chybu BadRequest .
Na webu Azure Portal vyhledejte a vyberte svou aplikaci funkcí.
Následující kroky používají ukázkovou aplikaci funkcí s názvem FabrikamFunctionApp.
V nabídce prostředků aplikace funkcí v části Vývojové nástroje vyberte Rozšířené nástroje>Go.
Po otevření stránky Kudu Plus v záhlaví webu Kudu v nabídce Konzola ladění vyberte CMD.
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.
Otevřete soubor function.json pro úpravy.
V objektu bindings zkontrolujte, zda existuje vlastnost authLevel . Pokud vlastnost existuje, nastavte hodnotu vlastnosti na
anonymous
. V opačném případě přidejte danou vlastnost a nastavte hodnotu.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 spravovanou identitu a ověřování Microsoft Entra, musíte pomocí kroků v této části najít a uložit následující hodnoty.
Vyhledejte ID tenanta vašeho tenanta Microsoft Entra.
Vyhledejte ID aplikace pro podnikovou aplikaci přidruženou k vaší spravované identitě.
Vyhledání ID tenanta pro vašeho tenanta Microsoft Entra
Spusťte příkaz PowerShellu s názvem Get-AzureAccount nebo na webu Azure Portal, postupujte takto:
Na webu Azure Portal otevřete tenanta Microsoft Entra.
V této příručce se jako ukázkový tenant používá Fabrikam .
V nabídce tenanta vyberte Přehled.
Zkopírujte a uložte ID tenanta pro pozdější použití, například:
Vyhledání ID objektu pro vaši spravovanou identitu
Po povolení spravované identity pro prostředek aplikace logiky Consumption vyhledejte objekt pro vaši spravovanou identitu. Toto ID použijete k vyhledání přidružené podnikové aplikace v tenantovi Microsoft Entra.
V nabídce aplikace logiky v části Nastavení vyberte Identita a pak vyberte přiřazený systém nebo přiřazený uživatelem.
Vyhledání ID aplikace pro aplikaci Azure Enterprise přidruženou k vaší spravované identitě
Když pro prostředek aplikace logiky povolíte spravovanou identitu, Azure automaticky vytvoří přidruženou aplikaci Azure Enterprise se stejným názvem. Teď potřebujete najít přidruženou podnikovou aplikaci a zkopírovat její ID aplikace. Později použijete toto ID aplikace k přidání zprostředkovatele identity pro vaši aplikaci funkcí vytvořením registrace aplikace.
Na webu Azure Portal vyhledejte a otevřete svého tenanta Microsoft Entra.
V nabídce tenanta v části Spravovat vyberte Podnikové aplikace.
Na stránce Všechny aplikace zadejte do vyhledávacího pole ID objektu pro vaši spravovanou identitu. Ve výsledcích vyhledejte odpovídající podnikovou aplikaci a zkopírujte ID aplikace:
Teď pomocí zkopírovaného ID aplikace přidejte do aplikace funkcí zprostředkovatele identity.
Přidání zprostředkovatele identity pro vaši aplikaci funkcí (jenom pracovní postupy Consumption)
Teď, když máte ID tenanta a ID aplikace, můžete aplikaci funkcí nastavit tak, aby používala ověřování Microsoft Entra přidáním zprostředkovatele identity a vytvořením registrace aplikace.
Na webu Azure Portal otevřete aplikaci funkcí.
V nabídce aplikace funkcí v části Nastavení vyberte Ověřování a pak vyberte Přidat zprostředkovatele identity.
V podokně Přidat zprostředkovatele identity v části Základy v seznamu zprostředkovatele identity vyberte Microsoft.
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 <ID aplikace> Jedinečný identifikátor, který se má použít pro tuto registraci aplikace. V tomto příkladu použijte ID aplikace, které jste zkopírovali pro podnikovou aplikaci přidruženou k vaší spravované identitě. 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.
- Nezapomeňte pravidelně obměňovat tajné kódy a bezpečně je ukládat. Můžete například spravovat tajné kódy ve službě Azure Key Vault, kde můžete použít spravovanou identitu k načtení klíče bez vystavení hodnoty neoprávněnému uživateli. Toto nastavení můžete aktualizovat tak, aby používalo odkazy služby 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í implicitní tok udělení OAuth 2.0. Tato metoda přímo vrátí pouze token ID nebo přístupový token. Tyto tokeny posílají poskytovatel a ukládají se v úložišti tokenů EasyAuth.
Důležité: Vzhledem k rizikům zabezpečení už není implicitní tok udělení vhodný metodou ověřování. Místo toho použijte tok autorizačního kódu s ověřovacím klíčem pro výměnu kódu (PKCE) nebo autorizační kódy jednostránkové aplikace (SPA).Adresa URL vystavitele No <authentication-endpoint-URL>/<Microsoft-Entra-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/
<Microsoft-Entra-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 jehttps://management.azure.com
hodnota . 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:
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.
Pokud chcete dokončit vytváření registrace aplikace, vyberte Přidat.
Až budete hotovi, zobrazí se na stránce Ověřování seznam zprostředkovatele identity a ID aplikace registrace aplikace (klienta). Vaše aplikace funkcí teď může tuto registraci aplikace použít k ověřování.
Zkopírujte ID aplikace (klienta) registrace aplikace, které se použije později ve vlastnosti Cílové skupiny akce Azure Functions pro váš pracovní postup.
Vraťte se do návrháře a postupujte podle kroků pro ověření přístupu pomocí spravované identity pomocí integrované akce Azure Functions.