Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Apache Airflow bietet eine REST API-Schnittstelle, mit der Sie Aufgaben wie das Abrufen von Informationen zu DAG-Ausführungen und -Aufgaben, das Aktualisieren von DAGs, das Abrufen von Airflow-Konfigurationen, das Hinzufügen und Löschen von Verbindungen und das Auflisten von Nutzern ausführen können.
Ein Beispiel für die Verwendung der Airflow REST API mit Cloud Run-Funktionen finden Sie unter DAGs mit Cloud Functions auslösen
Airflow REST API-Versionen
Die folgenden Airflow REST API-Versionen sind in Cloud Composer 2 verfügbar:
Airflow 2 verwendet die stabile REST API. Die experimentelle REST API wurde von Airflow verworfen.
Sie können die experimentelle REST API in Airflow 2 weiterhin verwenden, wenn Sie sie über eine Airflow-Konfigurationsüberschreibung aktivieren, wie unten beschrieben.
Hinweis
Enable the Cloud Composer API.
Stabile Airflow REST API aktivieren
Die stabile REST API ist in Airflow 2 bereits standardmäßig aktiviert.
Cloud Composer verwendet ein eigenes API-Authentifizierungs-Backend.Die Autorisierung funktioniert wie gewohnt von Airflow. Wenn ein neuer Nutzer über die API autorisiert wird, erhält das Nutzerkonto standardmäßig die Rolle Op
.
Sie können die stabile REST API aktivieren oder deaktivieren oder die Standardnutzerrolle ändern. Dazu überschreiben die folgenden Airflow-Konfigurationsoptionen:
Bereich | Schlüssel | Wert | Hinweise |
---|---|---|---|
api
|
(Airflow 2.2.5 und niedriger) auth_backend (Airflow 2.3.0 und höher) auth_backends
|
airflow.composer.api.backend.composer_auth
|
Ändern Sie zum Deaktivieren der stabilen REST API auf airflow.api.auth.backend.deny_all . |
api
|
composer_auth_user_registration_role
|
Op
|
Sie können eine beliebige andere Rolle angeben |
Experimentelle Airflow REST API aktivieren
Standardmäßig ist das API-Authentifizierungsfeature in der experimentellen API deaktiviert. Der Airflow-Webserver lehnt alle von Ihnen gestellten Anfragen ab.
Überschreiben Sie die folgende Airflow-Konfigurationsoption, um die API-Authentifizierungsfunktion und die experimentelle API von Airflow 2 zu aktivieren:
Bereich | Schlüssel | Wert | Hinweise |
---|---|---|---|
api
|
(Airflow 2.2.5 und niedriger) auth_backend (Airflow 2.3.0 und höher) auth_backends
|
airflow.api.auth.backend.default
|
Der Standardwert ist airflow.composer.api.backend.composer_auth . |
api
|
enable_experimental_api
|
True
|
Der Standardwert ist False . |
Nachdem Sie diese Konfigurationsoption auf airflow.api.auth.backend.default
gesetzt haben, akzeptiert der Airflow-Webserver alle API-Anfragen ohne Authentifizierung. Auch wenn der Airflow-Webserver selbst keine Authentifizierung erfordert, ist er durch Identity-Aware Proxy mit einer eigenen Authentifizierungsebene geschützt.
API-Aufrufe an die Airflow REST API über die Webserver-Zugriffssteuerung zulassen
Abhängig von der Methode, mit der die Airflow REST API aufgerufen wird, kann entweder eine IPv4- oder IPv6-Adresse verwenden. Denken Sie daran, den IP-Traffic zur Airflow REST API mithilfe der Webserver-Zugriffssteuerung zu entsperren.
Verwenden Sie die Standardkonfigurationsoption All IP addresses have access (default)
, wenn Sie nicht sicher sind, von welchen IP-Adressen Ihre Aufrufe an die Airflow REST API gesendet werden.
Aufrufe an Airflow REST API senden
Dieser Abschnitt enthält ein Beispielskript in Python, mit dem Sie DAGs mit der stabilen Airflow REST API auslösen können.
Fügen Sie den Inhalt des folgenden Beispiels in eine Datei mit dem Namen composer2_airflow_rest_api.py
ein und geben Sie dann Ihre Airflow-UI-URL, den Namen des DAG und die DAG-Ausführungskonfiguration in den Parametern an.
Die folgende Konfiguration ist beispielsweise nicht korrekt:
web_server_url = (
"https://example-airflow-ui-url-dot-us-central1.composer.googleusercontent.com/"
)
Mit einem Dienstkonto auf die Airflow REST API zugreifen
In der Airflow-Datenbank ist die Länge des E-Mail-Felds auf 64 Zeichen begrenzt. Dienstkonten haben manchmal E-Mail-Adressen, die länger als 64 Zeichen sind Zeichen. Es ist nicht möglich, Airflow-Nutzer für einen solchen Dienst zu erstellen wie gewohnt zu verwalten. Wenn für ein solches Dienstkonto kein Airflow-Nutzer vorhanden ist, führt der Zugriff auf die Airflow REST API zu den HTTP-Fehlern 401 und 403.
Als Behelfslösung können Sie einen Airflow-Nutzer für ein Dienstkonto vorregistrieren. Verwenden Sie dazu accounts.google.com:NUMERIC_USER_ID
als Nutzernamen und einen beliebigen eindeutigen String als E-Mail-Adresse.
Führen Sie folgenden Befehl aus, um
NUMERIC_USER_ID
für ein Dienstkonto abzurufen:gcloud iam service-accounts describe \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --format="value(oauth2ClientId)"
Ersetzen Sie:
SA_NAME
durch den Namen des Dienstkontos.PROJECT_ID
durch die Projekt-ID.
Erstellen Sie einen Airflow-Nutzer mit der Rolle
Op
für das Dienstkonto:Airflow-UI
Klicken Sie auf Sicherheit > Nutzer auflisten und dann auf Neuen Eintrag hinzufügen. Ihr Airflow-Nutzer muss die Rolle
Admin
haben, um um diese Seite zu öffnen.Geben Sie
accounts.google.com:NUMERIC_USER_ID
als Nutzernamen an. Ersetzen SieNUMERIC_USER_ID
durch die Nutzer-ID, die Sie auf der vorherigen Schritt.Geben Sie als E-Mail-Adresse eine eindeutige Kennung an. Sie können beliebige eindeutigen String hinzu.
Geben Sie die Rolle für den Nutzer an. Beispiel:
Op
.Das Kästchen Ist aktiv? muss angeklickt sein.
Geben Sie den Vor- und Nachnamen des Nutzers an. Sie können jeden String verwenden.
Klicken Sie auf Speichern.
gcloud
Führen Sie den folgenden Airflow-Befehl aus:
gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users create -- \ -u accounts.google.com:NUMERIC_USER_ID \ -e UNIQUE_ID \ -f UNIQUE_ID \ -l - -r Op --use-random-password
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.NUMERIC_USER_ID
durch die im vorherigen Schritt abgerufene User-ID.UNIQUE_ID
durch die ID des Airflow-Nutzers. Sie können einen beliebigen eindeutigen String verwenden.
Nachdem Sie einen Airflow-Nutzer für ein Dienstkonto erstellt haben, authentifiziert, da das Dienstkonto als vorregistrierter Nutzer erkannt wird. und bei Airflow angemeldet.
Airflow REST API-Komponente skalieren
Airflow REST API und Airflow-UI-Endpunkte werden innerhalb der Komponente ausgeführt. z.B. Airflow-Webserver. Wenn Sie die REST API intensiv nutzen, sollten Sie CPU- und Speicherparameter werden erhöht, um Airflow Webserver-Ressourcen anzupassen auf die erwartete Auslastung.