Aufrufen von Azure Functions über Workflows in Azure Logic Apps
Gilt für: Azure Logic Apps (Verbrauch + Standard)
Zum Ausführen von Code, der einen bestimmten Auftrag in Ihrem Logik-App-Workflow ausführt, müssen Sie keine vollständige App oder Infrastruktur erstellen. Stattdessen können Sie eine Azure-Funktion erstellen und aufrufen. Azure Functions bietet serverloses Computing in der Cloud und die Möglichkeit, die folgenden Aufgaben auszuführen:
- Erweitern des Verhaltens Ihres Workflows, indem Sie mit Node.js oder C# erstellte Funktionen ausführen
- Berechnungen in Ihrem Workflow
- Anwenden erweiterter Formatierung oder Computefelder in Ihrem Workflow
In dieser Schrittanleitung wird gezeigt, wie Sie eine vorhandene Azure-Funktion über Ihren Verbrauchs- oder Standard-Workflow aufrufen. Informationen zum Ausführen von Code ohne Azure Functions finden Sie in der folgenden Dokumentation:
- Ausführen von Codeschnipseln in Workflows
- Erstellen und Ausführen von .NET Framework-Code aus Standard-Workflows
Begrenzungen
Nur Verbrauchs-Workflows unterstützen die Authentifizierung von Azure-Funktionsaufrufen mithilfe einer verwalteten Identität mit Microsoft Entra-Authentifizierung. Standard-Workflows werden derzeit nicht im Abschnitt zum Aktivieren der Authentifizierung für Funktionsaufrufe unterstützt.
Azure Logic Apps unterstützt nicht die Verwendung von Azure Functions mit aktivierten Bereitstellungsslots. Dieses Szenario funktioniert zwar manchmal, aber dieses Verhalten ist unvorhersehbar und kann zu Autorisierungsproblemen führen, wenn Ihr Workflow versucht, die Azure-Funktion aufzurufen.
Voraussetzungen
Azure-Konto und -Abonnement. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.
Eine Azure-Funktions-App-Ressource, die eine oder mehrere Azure-Funktionen enthält
Ihre Funktions-App-Ressource und Logik-App-Ressource müssen dasselbe Azure-Abonnement verwenden.
Ihre Funktions-App-Ressource muss entweder .NET oder Node.js als Runtimestapel verwenden.
Wenn Sie Ihrer Funktions-App eine neue Funktion hinzufügen, haben Sie die Wahl zwischen C# und JavaScript.
Die Azure-Funktion, die Sie aufrufen möchten. Sie können diese Funktion mithilfe der folgenden Tools erstellen:
Ihre Funktion muss die Vorlage HTTP-Trigger verwenden.
Die Vorlage HTTP-Trigger kann Inhalte des Typs
application/json
von Ihrem Logik-App-Workflow akzeptieren. Wenn Sie Ihrem Workflow eine Funktion hinzufügen, zeigt der Designer benutzerdefinierte Funktionen an, die im Rahmen Ihres Azure-Abonnements aus dieser Vorlage erstellt wurden.Der Funktionscode muss die Antwort und Nutzlast enthalten, die nach Abschluss der Funktion an den Workflow zurückgegeben werden soll. Das Objekt
context
bezieht sich auf die Nachricht, die Ihr Workflow über den Azure Functions-Aktionsparameter mit dem Namen Anforderungstext weiter unten in diesem Leitfaden sendet.In diesem Leitfaden wird die folgende Beispielfunktion mit dem Namen FabrikamAzureFunction verwendet:
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(); }
Verwenden Sie für den Zugriff auf die Eigenschaften des
context
-Objekts aus Ihrer Funktion heraus die folgende Syntax:context.body.<property-name>
Um beispielsweise auf die
content
-Eigenschaft imcontext
-Objekt zu verweisen, verwenden Sie die folgende Syntax:context.body.content
Dieser Code enthält auch eine
input
-Variable, in der der Wert aus dem Parameterdata
gespeichert wird, damit Ihre Funktion Vorgänge für diesen Wert durchführen kann. Innerhalb der JavaScript-Funktionen ist diedata
-Variable außerdem eine Kurzform fürcontext.body
.Hinweis
Die
body
-Eigenschaft gilt hier für dascontext
-Objekt und ist nicht mit dem Body-Token in der Ausgabe einer Aktion identisch, das Sie möglicherweise ebenfalls an Ihre Funktion übergeben.Ihre Funktion kann keine benutzerdefinierten Routen verwenden – es sei denn, Sie haben eine OpenAPI-Definition festgelegt.
Wenn Sie für Ihre Funktion eine OpenAPI-Definition festgelegt haben, erhalten Sie im Workflow-Designer eine umfangreichere Benutzeroberfläche für die Arbeit mit Funktionsparametern. Bevor Ihr Workflow Funktionen mit OpenAPI-Definitionen finden und darauf zugreifen kann, müssen Sie Ihre Funktions-App mit diesen Schritten einrichten.
Ein Workflow für eine Verbrauchs- oder Standard-Logik-App, der mit einem beliebigen Trigger startet
Die Beispiele in diesem Leitfaden verwenden den Office 365 Outlook-Trigger mit dem Namen Wenn eine neue E-Mail empfangen wird.
Stellen Sie zum Erstellen und Aufrufen einer Azure-Funktion, die einen anderen Workflow aufruft, sicher, dass der sekundäre Workflow mit einem Trigger beginnt, der einen aufrufbaren Endpunkt bereitstellt.
Beispielsweise können Sie den Workflow mit dem allgemeinen HTTP- oder Anforderungstrigger starten, oder Sie können einen dienstbasierten Trigger wie Azure Queues oder Event Grid verwenden. Senden Sie innerhalb Ihrer Funktion eine HTTP POST-Anforderung an die URL des Triggers, und schließen Sie die Nutzdaten ein, die der sekundäre Workflow verarbeiten soll. Weitere Informationen hierzu finden Sie unter Aufrufen, Auslösen oder Schachteln von Logik-App-Workflows.
Tipps für das Arbeiten mit Azure-Funktionen
Suchen von Funktionen mit OpenAPI-Definitionen
Wenn Sie Ihre Funktions-App so einrichten möchten, dass der Workflow Funktionen, die über OpenAPI-Definitionen verfügen, finden und verwenden kann, führen Sie die folgenden Schritte aus:
Öffnen Sie im Azure-Portal Ihre Funktions-App. Stellen Sie sicher, dass die Funktions-App aktiv ausgeführt wird.
Richten Sie in Ihrer Funktions-App die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) mit den folgenden Schritten ein, damit alle Ursprünge zulässig sind:
Zugreifen auf Eigenschaftswerte in HTTP-Anforderungen
Webhook-basierte Funktionen können HTTP-Anforderungen als Eingaben akzeptieren und diese Anforderungen an andere Funktionen übergeben. Obwohl Azure Logic Apps beispielsweise über Funktionen zum Konvertieren von DateTime-Werten verfügt, wird in diesem einfachen Beispiel für eine JavaScript-Funktion Folgendes veranschaulicht: Zugreifen auf eine Eigenschaft in einem HTTP-Anforderungsobjekt, das an die Funktion übergeben wird, und Durchführen von Vorgängen für diesen Eigenschaftswert. Für den Zugriff auf Eigenschaften in Objekten wird in diesem Beispiel der Operator Punkt (.) verwendet:
function convertToDateString(request, response){
var data = request.body;
response = {
body: data.date.ToDateString();
}
}
In dieser Funktion läuft Folgendes ab:
Die Funktion erstellt die Variable
data
und weist der Variablen dasbody
-Objekt zu, das sich imrequest
-Objekt befindet. In der Funktion wird der Punktoperator (.) eingesetzt, um auf dasbody
-Objekt imrequest
-Objekt zu verweisen:var data = request.body;
Die Funktion kann nun über die Variable
data
auf diedate
-Eigenschaft zugreifen und den Eigenschaftswert aus dem DateTime-Typ in den DateString-Typ konvertieren, indem die FunktionToDateString()
aufgerufen wird. Die Funktion gibt auch das Ergebnis über diebody
-Eigenschaft in der Antwort der Funktion zurück:body: data.date.ToDateString();
Nachdem Sie Ihre Funktion in Azure erstellt haben, führen Sie die Schritte zum Hinzufügen einer Azure-Funktion zu Ihrem Workflow aus.
Übergeben von URI-Parametern an eine Funktion
Wenn Sie einen URI-Parameter an Ihre Funktion übergeben müssen, können Sie Abfrageparameter in der Endpunkt-URL der Funktion verwenden.
Wenn der Workflow-Designer für Ihre Logik-App geöffnet ist und der Funktionsinformationsbereich in der Liste Erweiterte Parameter geöffnet ist, wählen Sie Abfragen aus.
Eine Tabelle wird angezeigt, in der Sie die Parametereingabe als Schlüsselwertpaare eingeben können.
Geben Sie das Schlüsselwertpaar für Ihren Parameter ein, z. B.:
Hinzufügen einer Funktion zu Ihrem Workflow (Verbrauchs- und Standard-Workflows)
Zum Aufrufen einer Azure-Funktion aus Ihrem Workflow können Sie diese Funktionen wie alle anderen Aktionen im Designer hinzufügen.
Öffnen Sie im Azure-Portal Ihren Verbrauchs-Logik-App-Workflow im Designer.
Führen Sie im Designer die folgenden allgemeinen Schritte aus, um die Aktion Azure Functions namens Azure-Funktion auswählen hinzuzufügen.
Führen Sie im Bereich Aktion hinzufügen die folgenden Schritte aus:
Wählen Sie in der Liste der Funktions-Apps Ihre Funktions-App aus, wählen Sie die Funktion aus, und wählen Sie dann Aktion hinzufügen aus, z. B.:
Führen Sie die folgenden Schritte aus, nachdem das Informationsfeld der Funktion angezeigt wurde:
Geben Sie unter Anforderungstext die Eingabe für Ihre Funktion ein, die als JSON-Objekt (JavaScript Object Notation) formatiert werden muss, z. B.:
{"context": <selected-input> }
Diese Eingabe ist die Nutzlast Kontextobjekt oder die Nachricht, die von Ihrem Workflow an Ihre Funktion gesendet wird.
Um Token auszuwählen, die Ausgaben aus vorherigen Schritten darstellen, klicken Sie in das Feld Anforderungstext, und wählen Sie dann die Option zum Öffnen der Liste dynamischer Inhalte (Blitzsymbol) aus.
Um einen Ausdruck zu erstellen, klicken Sie in das Feld Anforderungstext, und wählen Sie dann die Option zum Öffnen des Ausdrucks-Editors (Formelsymbol) aus.
Im folgenden Beispiel wird ein JSON-Objekt mit dem Attribut
content
und einem Token angegeben, das die Ausgabe vom Typ Von des E-Mail-Triggers als Wert für Anforderungstext darstellt:Hier wird das Kontextobjekt nicht in eine Zeichenfolge umgewandelt, sodass der Inhalt des Objekts der JSON-Nutzlast direkt hinzugefügt wird. Im Folgenden sehen Sie das vollständige Beispiel:
Wenn Sie jedoch kein JSON-Token als Kontextobjekt angeben, das eine Zeichenfolge, ein JSON-Objekt oder ein JSON-Array übergibt, wird eine Fehlermeldung angezeigt. Sie können jedoch das Kontextobjekt in eine Zeichenfolge umwandeln, indem Sie doppelte Anführungszeichen ("") hinzufügen, etwa, wenn Sie das Token Empfangszeit verwenden möchten:
Um weitere Details wie die zu verwendende Methode, Anforderungsheader, Abfrageparameter oder Authentifizierung anzugeben, öffnen Sie die Liste Erweiterte Parameter, und wählen Sie die gewünschten Parameter aus. Bei der Authentifizierung unterscheiden sich die Optionen je nach der von Ihnen ausgewählten Funktion. Weitere Informationen finden Sie unter Aktivieren der Authentifizierung für Funktionen.
Aktivieren der Authentifizierung für Azure-Funktionsaufrufe (nur Verbrauchs-Workflows)
Ihr Verbrauchs-Workflow kann eine verwaltete Identität verwenden, um einen Azure-Funktionsaufruf zu authentifizieren und auf Ressourcen zuzugreifen, die durch Microsoft Entra ID geschützt sind. Diese verwaltete Identität kann den Zugriff authentifizieren, ohne dass eine Anmeldung erfolgen und Anmeldeinformationen oder Geheimnisse bereitgestellt werden müssen. Azure verwaltet diese Identität für Sie und dient als Hilfe beim Schützen Ihrer Anmeldeinformationen, da Sie keine Geheimnisse angeben oder eine Rotation dafür durchführen müssen. Sie können die systemseitig zugewiesene Identität oder eine manuell erstellte, benutzerseitig zugewiesene Identität auf Ressourcenebene der Logik-App einrichten. Die Azure-Funktion, die von Ihrem Workflow aufgerufen wird, kann dieselbe verwaltete Identität für die Authentifizierung verwenden.
Hinweis
Nur Verbrauchs-Workflows unterstützen die Authentifizierung für einen Azure-Funktionsaufruf mithilfe einer verwalteten Identität und Microsoft Entra-Authentifizierung. Standard-Workflows enthalten diese Unterstützung derzeit nicht, wenn sie die Aktion zum Aufrufen einer Azure-Funktion verwenden.
Weitere Informationen finden Sie in der folgenden Dokumentation:
- Authentifizieren des Zugriffs mit verwalteten Identitäten
- Hinzufügen der Authentifizierung zu ausgehenden Aufrufen
Um Ihre Funktions-App und Funktion so einzurichten, dass sie die verwaltete Identität Ihrer Verbrauchs-Logik-App verwenden können, führen Sie diese allgemeinen Schritte aus:
Aktivieren und Einrichten der verwalteten Identität Ihrer Logik-App.
Suchen der erforderlichen Werte zum Einrichten der Microsoft Entra-Authentifizierung
Einrichten Ihrer Funktion für anonyme Authentifizierung (nur Verbrauchs-Workflows)
Damit Ihre Funktion die verwaltete Identität Ihrer Verbrauchs-Logik-App verwendet, müssen Sie die Authentifizierungsebene Ihrer Funktion auf anonymous
festlegen. Andernfalls löst Ihr Workflow einen BadRequest-Fehler aus.
Suchen Sie im Azure-Portal nach Ihrer Funktions-App, und wählen Sie sie aus.
In den folgenden Schritten wird eine Beispielfunktions-App namens FabrikamFunctionApp verwendet.
Wählen Sie im Ressourcenmenü der Funktions-App unter Entwicklungstools die Option Erweiterte Tools>Los (Go) aus.
Nachdem die Seite Kudu Plus geöffnet wurde, wählen Sie auf der Titelleiste der Kudu-Website im Menü Debugging-Konsole die Option CMD aus.
Wählen Sie auf der angezeigten nächsten Seite Website>wwwroot>Ihre Funktion aus der Ordnerliste aus.
In den folgenden Schritten wird eine Beispielfunktion namens FabrikamAzureFunction verwendet.
Öffnen Sie die Datei function.json zur Bearbeitung.
Überprüfen Sie im bindings-Objekt (Bindungen), ob die authLevel-Eigenschaft vorhanden ist. Wenn die Eigenschaft vorhanden ist, setzen Sie den Eigenschaftswert auf
anonymous
. Fügen Sie die Eigenschaft andernfalls hinzu, und legen Sie den Wert fest.Wenn Sie fertig sind, speichern Sie Ihre Einstellungen. Sie können nun mit folgendem Artikel fortfahren:
Suchen der erforderlichen Werte zum Einrichten der Microsoft Entra-Authentifizierung (nur Verbrauchs-Workflows)
Bevor Sie Ihre Funktions-App für die Verwendung der verwalteten Identität und der Microsoft Entra-Authentifizierung einrichten können, müssen Sie die folgenden Werte suchen und speichern, indem Sie die Schritte in diesem Abschnitt ausführen.
Suchen der Mandanten-ID Ihres Microsoft Entra-Mandanten
Führen Sie entweder den PowerShell-Befehl namens Get-AzureAccount aus, oder führen Sie im Azure-Portal die folgenden Schritte aus:
Öffnen Sie im Azure-Portal Ihren Microsoft Entra-Mandanten.
In diesem Leitfaden wird Fabrikam als Beispielmandant verwendet.
Wählen Sie im Menü „Mandant“ die Option Übersicht aus.
Kopieren und speichern Sie Ihre Mandanten-ID zur späteren Verwendung, z. B.:
Suchen der Objekt-ID für Ihre verwaltete Identität
Nachdem Sie die verwaltete Identität für Ihre Verbrauchs-Logik-App-Ressource aktiviert haben, suchen Sie das Objekt für Ihre verwaltete Identität. Sie verwenden diese ID, um die zugeordnete Unternehmensanwendung in Ihrem Microsoft Entra-Mandanten zu finden.
Wählen Sie im Menü der Logik-App unter Einstellungen die Option Identität und dann entweder Systemseitig zugewiesen oder Benutzerseitig zugewiesen aus.
Suchen der Anwendungs-ID für die Azure-Unternehmensanwendung, die Ihrer verwalteten Identität zugeordnet ist
Wenn Sie eine verwaltete Identität für Ihre Logik-App-Ressource aktivieren, erstellt Azure automatisch eine zugeordnete Azure-Unternehmensanwendung mit demselben Namen. Sie müssen nun die zugeordnete Unternehmensanwendung suchen und ihre Anwendungs-ID kopieren. Später verwenden Sie diese Anwendungs-ID, um einen Identitätsanbieter für Ihre Funktions-App hinzuzufügen, indem Sie eine App-Registrierung erstellen.
Suchen Sie im Azure-Portal nach Ihrem Microsoft Entra-Mandanten, und öffnen Sie ihn.
Wählen Sie im Menü „Mandant“ unter Verwalten die Option Unternehmensanwendungen aus.
Geben Sie auf der Seite Alle Anwendungen im Suchfeld die Objekt-ID für Ihre verwaltete Identität ein. Suchen Sie in den Ergebnissen die übereinstimmende Unternehmensanwendung, und kopieren Sie die Anwendungs-ID:
Verwenden Sie nun die kopierte Anwendungs-ID, um Ihrer Funktions-App einen Identitätsanbieter hinzuzufügen.
Hinzufügen eines Identitätsanbieters für Ihre Funktions-App (nur Verbrauchs-Workflows)
Nachdem Sie nun über die Mandanten-ID und die Anwendungs-ID verfügen, können Sie Ihre Funktions-App so einrichten, dass sie Microsoft Entra-Authentifizierung verwendet, indem Sie einen Identitätsanbieter hinzufügen und eine App-Registrierung erstellen.
Öffnen Sie im Azure-Portal Ihre Funktions-App.
Wählen Sie im Menü der Funktions-App unter Einstellungen die Option Authentifizierung und dann Identitätsanbieter hinzufügen aus.
Wählen Sie im Bereich Identitätsanbieter hinzufügen unter Grundlagen in der Liste Identitätsanbieter die Option Microsoft aus.
Wählen Sie unter App-Registrierung für App-Registrierungstyp die Option Details einer vorhandenen App-Registrierung bereitstellen aus, und geben Sie die zuvor gespeicherten Werte ein.
Eigenschaft Erforderlich Wert BESCHREIBUNG Anwendungs-ID (Client) Ja <Anwendungs-ID> Der eindeutige Bezeichner, der für diese App-Registrierung verwendet werden soll. Verwenden Sie in diesem Beispiel die Anwendungs-ID, die Sie für die Unternehmensanwendung kopiert haben, die Ihrer verwalteten Identität zugeordnet ist. Geheimer Clientschlüssel Optional, aber empfohlen <client-secret> Der Geheimniswert, den die App verwendet, um ihre Identität beim Anfordern eines Tokens nachzuweisen. Der geheime Clientschlüssel wird in der Konfiguration Ihrer App als slot-sticky (slotfixiert) Anwendungseinstellung namens MICROSOFT_PROVIDER_AUTHENTICATION_SECRET erstellt und gespeichert.
– Achten Sie darauf, geheime Schlüssel regelmäßig zu rotieren und sicher zu speichern. Verwalten Sie Ihre geheimen Schlüssel beispielsweise in Azure Key Vault, wo Sie eine verwaltete Identität verwenden können, um den Schlüssel abzurufen, ohne den Wert für einen nicht autorisierten Benutzer verfügbar zu machen. Sie können diese Einstellung aktualisieren, um Key Vault-Verweise zu verwenden.
– Wenn Sie einen geheimen Clientschlüsselwert bereitstellen, verwenden Anmeldevorgänge den Hybridflow und geben sowohl Zugriffs- als auch Aktualisierungstoken zurück.
– Wenn Sie keinen geheimen Clientschlüssel bereitstellen, verwenden Anmeldevorgänge den OAuth 2.0-Flow für implizite Genehmigung. Diese Methode gibt direkt ein ID-Token oder Zugriffstoken zurück. Diese Token werden vom Anbieter gesendet und im EasyAuth-Tokenspeicher gespeichert.
Wichtig: Aufgrund von Sicherheitsrisiken ist der implizite Genehmigungsflow keine geeignete Authentifizierungsmethode mehr. Verwenden Sie stattdessen entweder den Autorisierungscodeflow mit PKCE (Proof Key for Code Exchange) oder die Autorisierungscodes für Single-Page-Webanwendungen (Single-Page Applications).Aussteller-URL No <Authentifizierungsendpunkt-URL>/<Microsoft-Entra-Mandanten-ID>/v2.0 Diese URL leitet Benutzerinnen und Benutzer an den richtigen Microsoft Entra-Mandanten um und lädt die entsprechenden Metadaten herunter, um die entsprechenden Tokensignaturschlüssel und den Anspruchswert des Tokenausstellers zu ermitteln. Für Apps, die Azure AD v1 verwenden, lassen Sie /v2.0 in der URL aus.
Verwenden Sie für dieses Szenario die folgende URL:https://sts.windows.net/
<Microsoft-Entra-Mandanten-ID>Zulässige Tokenzielgruppen Nein <application-ID-URI> Der Anwendungs-ID-URI (Ressourcen-ID) für die Funktions-App. Bei einer Cloud- oder Server-App, für die Sie Authentifizierungstoken von einer Web-App zulassen möchten, fügen Sie den Anwendungs-ID-URI der Web-App hinzu. Die konfigurierte Client-ID wird immer implizit als zulässige Zielgruppe angesehen.
In diesem Szenario ist der Werthttps://management.azure.com
. Später können Sie denselben URI in der Audience-Eigenschaft (Zielgruppe) verwenden, wenn Sie Ihre Funktionsaktion in Ihrem Workflow für die Verwendung der verwalteten Identität einrichten.
Wichtig: Der Anwendungs-ID-URI (Ressourcen-ID) muss genau dem Wert entsprechen, den Microsoft Entra ID erwartet, einschließlich aller erforderlichen nachgestellten Schrägstriche.An dieser Stelle sieht Ihre Version in etwa wie in diesem Beispiel aus:
Wenn Sie Ihre Funktions-App zum ersten Mal mit einem Identitätsanbieter einrichten, wird auch der Abschnitt App Service-Authentifizierungseinstellungen angezeigt. Diese Optionen bestimmen, wie Ihre Funktions-App auf nicht authentifizierte Anforderungen reagiert. Die Standardauswahl leitet alle Anforderungen zur Anmeldung bei dem neuen Identitätsanbieter um. Sie können dieses Verhalten jetzt anpassen oder diese Einstellungen später über die Hauptseite der Authentifizierung anpassen, indem Sie neben den Authentifizierungs-Einstellungendie Option Bearbeiten auswählen. Weitere Informationen zu diesen Optionen finden Sie unter Authentifizierungsflow – Authentifizierung und Autorisierung in Azure App Service und Azure Functions.
Andernfalls können Sie mit dem nächsten Schritt fortfahren.
Um die Erstellung der App-Registrierung fertig zu stellen, klicken Sie auf Hinzufügen.
Wenn Sie fertig sind, werden auf der Seite Authentifizierung nun der Identitätsanbieter und die Anwendungs-ID (Client) für die App-Registrierung aufgeführt. Ihre Funktions-App kann diese App-Registrierung jetzt für die Authentifizierung verwenden.
Kopieren Sie den Wert unter App-ID (Client) der App-Registrierung, um sie später in der Audience-Eigenschaft der Azure Functions-Aktion für Ihren Workflow zu verwenden.
Kehren Sie zum Designer zurück, und führen Sie die Schritte zum Authentifizieren des Zugriffs mit der verwalteten Identität mithilfe der integrierten Azure Functions-Aktion aus.