Freigeben über


Azure Funktionsaktivität in Azure Data Factory

Gilt für: Azure Data Factory Azure Synapse Analytics

Tipp

Data Factory in Microsoft Fabric ist die nächste Generation von Azure Data Factory mit einer einfacheren Architektur, integrierter KI und neuen Features. Wenn Sie mit der Datenintegration noch nicht vertraut sind, beginnen Sie mit Fabric Data Factory. Vorhandene ADF-Workloads können auf Fabric aktualisiert werden, um auf neue Funktionen in der Datenwissenschaft, Echtzeitanalysen und Berichterstellung zuzugreifen.

Mit der Azure-Funktionsaktivität können Sie Azure Functions in einer Azure Data Factory- oder Synapse-Pipeline ausführen. Zum Ausführen einer Azure-Funktion müssen Sie eine verknüpfte Dienstverbindung erstellen. Anschließend können Sie den verknüpften Dienst mit einer Aktivität verwenden, die die Azure Funktion angibt, die Sie ausführen möchten.

Erstellen einer Azure Funktionsaktivität mit der Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um eine Azure Funktionsaktivität in einer Pipeline zu verwenden:

  1. Erweitern Sie den Abschnitt "Azure Function" im Bereich "Pipelineaktivitäten" und ziehen Sie eine Azure Function-Aktivität auf die Pipeline-Leinwand.

  2. Wählen Sie die neue Azure Funktionsaktivität auf dem Zeichenbereich aus, wenn sie noch nicht ausgewählt ist, und die Registerkarte Settings, um die Details zu bearbeiten.

    Screenshot der Benutzeroberfläche für eine Azure Funktionsaktivität.

  3. Wenn Sie noch keinen Azure mit der Funktion verknüpften Dienst definiert haben, wählen Sie "Neu" aus, um eine neue zu erstellen. Wählen Sie im neuen verknüpften Azure Functions-Dienstbereich die URL Ihrer vorhandenen Azure Funktions-App aus, und geben Sie einen Funktionsschlüssel an.

    Screenshot des Bereichs zur Erstellung eines verknüpften Diensts der neuen Azure Function.

  4. Geben Sie nach dem Auswählen des Azure verknüpften Diensts den Funktionsnamen und weitere Details an, um die Konfiguration abzuschließen.

Azure Function-Verknüpfter Dienst

Der Rückgabetyp der Azure-Funktion muss eine gültige JObject sein. (Denken Sie daran, dass JArraykeinJObject ist.) Jeder andere Rückgabetyp als JObject schlägt fehl und löst den Benutzerfehler Antwortinhalt ist kein gültiges JObject aus.

Der Funktionsschlüssel bietet sicheren Zugriff auf den Funktionsnamen, wobei jede Funktion über einen eigenen, eindeutigen Schlüssel oder einen Hauptschlüssel innerhalb einer Funktions-App verfügt. Verwaltete Identitäten bieten sicheren Zugriff auf die gesamte Funktions-App. Der Benutzer muss den Schlüssel für den Zugriff auf den Funktionsnamen angeben. Weitere Informationen finden Sie in der Funktionsdokumentation zum Schlüssel für den Funktionszugriff.

Property Beschreibung Erforderlich
type Die type-Eigenschaft muss auf Folgendes festgelegt werden: AzureFunction Ja
Funktions-App-URL URL für die Azure-Funktions-App. Das Format lautet https://<accountname>.azurewebsites.net. Diese URL ist der Wert unter URL Abschnitt beim Anzeigen Ihrer Funktions-App im Azure-Portal. Ja
Funktionsschlüssel Zugriffstaste für die Azure-Funktion. Wählen Sie den Abschnitt "Verwalten" für die jeweilige Funktion aus, und kopieren Sie entweder den Funktionsschlüssel oder den Hostschlüssel. Weitere Informationen finden Sie hier: Arbeiten mit Zugriffsschlüsseln Ja
Authentifizierung Die Authentifizierungsmethode, die zum Aufrufen der Azure Function verwendet wird. Die unterstützten Werte sind vom System zugewiesene verwaltete Identität oder "anonym". Ja
Ressourcen-ID Die App(Client)-ID der Azure-Funktion. Wechseln Sie für die jeweilige Funktion zum Abschnitt Authentifizierung, und rufen Sie die App-ID (Client-ID) unter Identitätsanbieter ab. Diese Eigenschaft wird angezeigt, wenn Sie vom System zugewiesene verwaltete Identität verwenden. Weitere Informationen finden Sie unter Konfigurieren Sie Ihre App Service- oder Azure Functions-App, um die Microsoft Entra-Anmeldung zu verwenden. Nein*

/* Die resourceId Eigenschaft ist erforderlich, wenn Sie die vom System zugewiesene verwaltete Identitätsauthentifizierung verwenden.

Authentifizierung mit systemseitig zugewiesener verwalteter Identität

Sie können die vom System zugewiesene verwaltete Identität (SAMI)-Authentifizierung auf zwei Arten verwenden:

  • Legen Sie die Ressourcen-ID auf https://management.azure.com. Data Factory stellt eine Verbindung mit der Funktions-App mithilfe der vom System zugewiesenen verwalteten Identität und führt die Funktions-App mit anonymer Authentifizierung aus.

  • Konfigurieren Sie für sichere Umgebungen, in denen Sie keine anonyme Authentifizierung verwenden möchten, einen Dienstprinzipalnamen (Service Principal Name, SPN) als Ressourcen-ID. Der SPN muss in der Function App ordnungsgemäß konfiguriert werden.

    1. Erstellen Sie eine neue App-Registrierung als Dienstprinzipalidentität.

    2. Wechseln Sie in Ihrer Funktions-App unter "Einstellungen" zum Abschnitt "Authentifizierung", und erstellen Sie einen Identitätsanbieter.

    3. Fügen Sie die ADF-Anwendungs-ID im Abschnitt "Zulässige Anforderungen aus bestimmten Clientanwendungen " und die Objekt-ID im Abschnitt "Allow requests from specific identifies " hinzu. Die Anwendungs-ID und Objekt-ID finden Sie in den folgenden Schritten:

      1. Öffnen Sie das portal Azure
      2. Navigieren zu Unternehmensanwendungen
      3. Suchen Sie nach dem Namen Ihrer Azure Data Factory/verwalteten Identität.
      4. Kopieren Sie die In der Tabelle gefundenen Objekt- und Anwendungs-IDs.

      Screenshot der App-Registrierung mit den Feldern, die mit der Anwendungs-ID und der Objekt-ID ausgefüllt werden sollen.

Azure-Funktionsaktivität

Property Beschreibung Zulässige Werte Erforderlich
Name Name der Aktivität in der Pipeline String Ja
type Aktivitätstyp ist "AzureFunctionActivity" String Ja
Verknüpfter Dienst Der mit der Azure-Funktion verknüpfte Dienst für die entsprechende Azure-Funktions-App Verweis auf den verknüpften Dienst Ja
Funktionsname Name der Funktion in der Azure Funktions-App, die diese Aktivität aufruft String Ja
Methode REST-API-Methode für den Funktionsaufruf Zeichenfolgenunterstützte Typen: GET, POST, PUT Ja
Header Header, die in der Anforderung gesendet werden. So legen Sie beispielsweise die Sprache und den Typ für eine Anforderung fest: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } Zeichenfolge (oder ein Ausdruck mit resultType der Zeichenfolge) Nein
Body Text, der zusammen mit der Anforderung an die API-Methode der Funktion gesendet wird Zeichenfolge (oder Ausdruck mit resultType der Zeichenfolge) oder Objekt. Erforderlich für PUT/POST-Methoden

Weitere Informationen finden Sie in den Details zum Schema der Anforderungsnutzlast im Abschnitt Schema der Anforderungsnutzlast.

Routing und Abfragen

Die Azure-Funktionsaktivität unterstützt routing. Wenn Ihre Azure-Funktion beispielsweise den Endpunkt https://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret> aufweist, ist die functionName, die in der Azure Funktionsaktivität verwendet werden soll, <functionName>/<value>. Sie können diese Funktion parametrisieren, um zur Laufzeit den gewünschten functionName bereitzustellen.

Hinweis

Der Funktionsname (functionName) für Durable Functions sollte aus der Eigenschaft route der Funktionsbindung in der JSON-Definition übernommen werden, um die Routinginformationen einzuschließen. Die einfache Verwendung der functionName ohne die enthaltenen Routendetails führt zu einem Fehler, da die Funktions-App nicht gefunden werden kann.

Die Azure Funktionsaktivität unterstützt auch queries. Eine Abfrage muss als Teil von functionName einbezogen werden. Wenn der Funktionsname beispielsweise HttpTriggerCSharp ist und die Abfrage, die Sie einschließen möchten, name=hello ist, können Sie die functionName in der Azure Funktionsaktivität als HttpTriggerCSharp?name=hello erstellen. Diese Funktion kann parametrisiert werden, sodass der Wert zur Laufzeit bestimmt werden kann.

Timeout und zeitintensive Funktionen

Azure Functions erreicht nach 230 Sekunden den Timeout, unabhängig von der Einstellung functionTimeout, die Sie in den Einstellungen vorgenommen haben. hier finden Sie weitere Informationen Um dieses Verhalten zu umgehen, folgen Sie einem asynchronen Muster, oder verwenden Sie Durable Functions. Der Vorteil von Durable Functions besteht darin, dass sie einen eigenen Zustandsnachverfolgungsmechanismus anbieten, sodass Sie ihre eigene Zustandsverfolgung nicht implementieren müssen.

Erfahren Sie mehr über Durable Functions in diesen Artikel. Sie können eine Azure Funktionsaktivität einrichten, um die dauerhafte Funktion aufzurufen, die eine Antwort mit einem anderen URI zurückgibt, z. B. dieses Beispiel. Da statusQueryGetUri den HTTP-Status 202 zurückgibt, während die Funktion ausgeführt wird, können Sie den Status der Funktion mithilfe einer Webaktivität abfragen. Richten Sie eine Webaktivität ein, bei der das Feld url auf @activity('<AzureFunctionActivityName>').output.statusQueryGetUri festgelegt ist. Wenn Durable Function abgeschlossen ist, entspricht die Ausgabe der Funktion der Ausgabe der Webaktivität.

Beispiel

Sie finden ein Beispiel, das eine Azure-Funktion verwendet, um den Inhalt einer Tar-Datei here zu extrahieren.

Weitere Informationen zu den unterstützten Aktivitäten finden Sie in Pipelines und Aktivitäten.