Die Workflowmanagement-Plattform Apache Airflow bietet nicht nur eine umfangreiche Weboberfläche für die Steuerung und Überwachung erstellter Automatisierungen in Form von Workflows, sondern ebnet mit der ausgebauten REST API weiteren Anwendungsideen den Weg. Insbesondere Entwickler*innen aus den Bereichen Business Intelligence, Data Engineering und Machine Learning gestalten durch die Verwendung der REST API das Workflowmanagement nach ihren Wünschen. In diesem Blogbeitrag stellen wir Ihnen die Airflow API vor und geben Ihnen wichtige Hinweise bezüglich der sicheren Konfiguration von Airflow und der Nutzung der Endpunkte. Lassen Sie sich auch von unseren Anwendungsideen zu einer Umsetzung inspirieren.
Zunächst möchten wir Ihnen einige Anwendungsszenarien vorstellen, die durch die ausgebaute API von Apache Airflow ermöglicht werden:
Schon als die experimentelle API als einziger Zugriffspunkt von außen diente, war ein Hauptanwendungszweck das Starten von Workflows nach Ereignissen in externen Systemen und Prozessen. Im Machine Learning Bereich wird beispielsweise ein erneutes Training gestartet, falls die Performance des produktiven Modells unter einen Schwellwert rutscht. Das Starten - losgelöst von einem festen Ausführungsintervall - kann seit Airflow 2.2 auch über die TimeTables gelöst werden.
Sind die Workflows in Airflow entsprechend gestaltet, dass das Zielsystem der Datenworkflows über eine Kürzel in einer internen Variablen ausgewählt wird, kann im Falle eines Fehlers die entsprechende Variable mit einem API-Request neu gesetzt werden um den Traffic kurzfristig im Rahmen einer Fehlerbehandlung umzuleiten.
Über die API sind Benutzerprofile erstellbar (POST), abrufbar (GET) und veränderbar (PATCH). Dies ist die Grundlage für ein automatisches Benutzermanagement, in dem beispielsweise das initiale Benutzeranlegen auf dem Test- und Produktivsystem über die API stattfindet. Um Airflow mit Ihrem zentralen Benutzerverzeichnis zu verknüpfen, ist es nicht notwendig, eigene Integrationsskripte gegen die REST API zu programmieren. Für diesen Zweck können verschiedenste standardisierte Authentifizierungsprotokolle direkt über das zugrunde liegende Flask Framework konfiguriert werden.
Die meisten Funktionen der Weboberfläche werden auch über die REST API abgebildet. Dies macht es leicht möglich eigene Anwendungen auf Airflow aufzubauen. Möchten Sie beispielsweise eine light-Version einer Web-App zur Triggerung und Überwachung der Workflows per iFrame in SAC einbinden, ist dies über die Funktionen der API möglich.
Die beidseitige Verknüpfung von Systemen ist über die API leicht realisierbar. So sind die Prozessketten im SAP BW und die Workflows in Airflow sowohl asynchron als auch synchron verknüpfbar. Mehr darüber erfahren Sie in unserem Blogbeitrag zum Thema.
Wie werden diese Anwendungsideen mit Apache Airflow umgesetzt? Im nächsten Abschnitt wird der technische Rahmen der RESTful API betrachtet.
Seit Apache Airflow 2.0 (Dezember 2020) ist die API ihren experimentellen Status entwachsen und geeignet für den produktiven Betrieb. Das bedeutet, dass künftige Weiterentwicklungen der API die bestehenden Endpunkte nicht beeinflussen werden. Der verwendete Spezifikation ist dabei OpenAPI 3.
Der Output eines API-Requests liefert Informationen im JSON-Format zurück, während die hinterlegten Endpunkte auch den Input als JSON-Objekt erwarten.
Das Löschen von Task Instanzen als beispielhafter POST-Endpunkt und Schema der benötigte Informationen
wie der Datumsbereich (start_date und end_date)
Dokumentation
Mit der Weiterentwicklung der API hat sich nicht nur die Anzahl der Endpunkte erhöht, sondern auch die Qualität der Dokumentation. Während die experimentelle API Entwickler*innen vor einen wesentlichen Aufwand an Trial-and-Error stellte, um benötigte Input-Informationen korrekt zu übergeben und den Output effizient weiterzunutzen, findet sich in der Dokumentation der neuen API von Airflow jeder Endpunkt im vollem Umfang wieder.
Sicherheit
Für die Verwendung der REST API sind einige Einstellungen in der Konfigurationsdatei der Airflow Installation vorzunehmen. Für das Freischalten muss ein Authentifizierungsbackend (AUTH_BACKEND) angegeben werden. Die Standardeinstellung airflow.api.auth.backend.deny_all lehnt dabei alle Anfragen standardmäßig ab. Darüber hinaus stehen bekannte Optionen für eine Authentifizierung zur Verfügung. Beispielsweise kann Kerberos oder die HTTP Basic Authentifizierung über die Nutzer in der Airflow DB ausgewählt werden. Wenn das Airflow Benutzermanagement mit einem OAuth2 Verzeichnisdienst verknüpft ist, können auch höherwertige Token-basierte Authentifizierungs-- und Autorisierungsmechanismen für die REST API genutzt werden.
Die hervorragende Anpassbarkeit von Airflow ist dadurch gewährleistet, dass Sie hier ein eigenes Backend nach Bedarf erstellen und hinterlegen können. Mit der Einstellung enable_experimental_api = True kann die veraltete API aktiviert werden. Bis auf die Kompalibilität zur Airflow 1 entstehen jedoch keine weiteren Vorteile, da die Endpunkte in der überarbeiteten API alle enthalten sind.
Endpunkte
Die verfügbaren Endpunkte beschreiben beinahe alle Funktionen, die durch die Weboberfläche und das CLI von Airflow bereitgestellt werden. Aufgaben (Tasks), Workflows (DAGs), Benutzer, Variablen und Verbindungen werden flexibel über die API verwaltet. Im folgenden Abschnitt sollen einige verbreitete Endpunkte und ein konkretes Code-Beispiel zur Verwendung der API vorgestellt werden.
Abschließend sollen die Endpunkte und die Verwendung der API im Code-Beispiel vorgestellt werden. Da die Liste an Endpunkten beinah den vollen Funktionsumfang von Airflow umschließt, möchten wir Ihnen an dieser Stelle einen Überblick über die wichtigsten Endpunkte geben. In der Dokumentation der Schnittstelle sind jeweils genau Informationen zu den erwarteten Input der PATCH und POST Endpunkte hinterlegt.
GET-Requests
Hier werden insbesondere Informationen zu den generellen Workflows, Workflowläufen, Aufgaben, Variablen, Benutzern und Verbindungen zurückgeben. Aber auch die Log-Dateien und die Konfigurationsdatei, sowie die Statusabfrage des Schedulers und des Webservers sind hier zugänglich.
POST-Requests
Um in Apache Airflow Aktionen aus der Ferne auszuführen, stehen viele POST-Endpunkte bereit. Hier können Sie einen Workflokflow starte, neue Verbindungen und Variablen anlegen und den Status von Aufgaben setzen.
Neben den GET- und POST-Request gibt es auch eine Vielzahl an PATCH-Requests, welche Sie in der offiziellen Dokumentation finden.
Ist die Verwendung der API in den Einstellungen von Airflow freigeschaltet, ist der API-Call über jedes System möglich, welches HTTP-Requests unterstützt. Für die ersten Versuche eignet sich das Programm Postman oder Sie können folgendes Code-Beispiel in der Programmiersprache Python abändern und ausführen. Hier müssen Sie entsprechende die URL ihrer Airflow-Instanz und autorisierte Benutzerdaten angeben.
import requests
from requests.auth import HTTPBasicAuth
# user in airflow db or defined backend
auth = HTTPBasicAuth(user, pw)
# add additional parameters
data = {"conf": dag_config}
r = requests.post(url + '/api/v1/dags/ExampleWorkflow/dagRuns', auth=auth, headers=headers, json=data)
# save dag_run_id if successfull request
if r.json()["state"] == "success":
dag_id = r.json()["dag_run_id"]
Zusammenfassend bietet die stabile API von Apache Airflow eine sichere und umfangreiche Basis für spannende Anwendungsfälle und mit einer erhöhten Benutzerfreundlichkeit und Anpassbarkeit der zugrundeliegenden Einstellungen.
Haben Sie weitere Fragen zu Apache Airflow als Workflowmanagementsystem oder benötigen Sie einen Umsetzungspartner für spannende Anwendungsszenarien?
Wir unterstützen Sie gerne von der Problemanalyse bis zur technischen Umsetzung.
Treten Sie noch heute mit uns in Kontakt!