Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite wird erläutert, wie Sie den Status Ihrer Umgebung mithilfe von Umgebungssnapshots speichern und laden.
Sie können Ihre Umgebung so konfigurieren, dass Snapshots automatisch gespeichert werden. Weitere Informationen finden Sie unter Geplante Snapshots konfigurieren.
Umgebungssnapshots
In Umgebungs-Snapshots wird der Status Ihrer Umgebung gespeichert. Sie können Umgebungs-Snapshots nach Bedarf speichern und laden.
Sie können Snapshots für Folgendes verwenden:
Stellen Sie Ihre Umgebung mit dem Zustand eines früheren Zeitpunkts wieder her. Erstellen Sie Sicherungen Ihrer Umgebung mithilfe von Snapshots und laden Sie dann einen der Snapshots, um Ihre Umgebung wiederherzustellen. Sie können beispielsweise einen Aktualisierungsvorgang zurücksetzen, bei dem PyPI-Pakete installiert oder Airflow-Konfigurationsoptionen überschrieben werden, auch nachdem Ihre Umgebung erfolgreich aktualisiert wurde.
Gegenseitige Upgrades durchführen und Umgebungen kopieren Erstellen Sie einen Snapshot einer vorhandenen Umgebung, erstellen Sie eine neue Umgebung, in der dieselbe oder eine neuere Version von Cloud Composer verwendet wird, und wenden Sie den Snapshot auf diese neue Umgebung an. Dieser Vorgang ähnelt der Migration. Pausieren Sie DAGs, bevor Sie den Snapshot erstellen, um doppelte DAG-Ausführungen zu vermeiden.
So werden Snapshots gespeichert
Ein Umgebungs-Snapshot ist eine Gruppe von Dateien, die den Status Ihrer Umgebung beschreiben und die Sicherung der Umgebungsdaten speichern.
Sie können mehrere Snapshots Ihrer Umgebung erstellen. Umgebungs-Snapshots sind nicht inkrementell. Sie können jeden Snapshot unabhängig von anderen Snapshots verwenden.
Cloud Composer löscht keine Snapshots, wenn Sie Ihre Umgebung löschen.
Standardmäßig speichert Cloud Composer Snapshots im Ordner snapshots/
im Bucket Ihrer Umgebung. Sie können auch einen benutzerdefinierten Speicherort angeben, wenn Sie einen Snapshot erstellen.
In der Cloud Storage-Benutzeroberfläche werden Daten zur besseren Übersicht als Ordner angezeigt, Buckets funktionieren jedoch in einer Flatfile-Struktur. Das ändert nichts daran, wie Sie Snapshots in der Google Cloud -Konsole speichern und laden. Sie sollten dies jedoch berücksichtigen, wenn Sie Vorgänge direkt für die Dateien in Ihrem Bucket ausführen. Weitere Informationen finden Sie unter Objekt-Namespace.
Sicherheitsaspekte für Snapshots
Um dieses Sicherheitsrisiko zu minimieren, können Sie vertrauliche Informationen, die von Airflow-DAGs verwendet werden, z. B. Schlüssel oder Passwörter, in Secret Manager speichern. Weitere Informationen finden Sie unter Secret Manager für Ihre Umgebung konfigurieren.
Prüfen Sie die Sicherheitsberechtigungen für den Bucket Ihrer Umgebung. Wenn Sie Umgebungssnapshots in einem benutzerdefinierten Bucket speichern, müssen die Zugriffsberechtigungen dafür in Ihrem Projekt richtig konfiguriert sein. Achten Sie beim Zuweisen von Berechtigungen darauf, dass das Dienstkonto der Umgebung über genügend Berechtigungen zum Speichern und Laden von Snapshots aus dem Bucket verfügt.
Welche Daten werden in Snapshots gespeichert?
Cloud Composer speichert die folgenden Daten in Snapshots:
- Airflow-Konfigurationsüberschreibungen.
- Umgebungsvariablen.
- Liste der benutzerdefinierten PyPI-Pakete als Anforderungen.
- Ein Backup der Airflow-Datenbank, einschließlich der Status ausgeführter Aufgaben und des Verlaufs von DAG-Ausführungen.
- Eine Sicherung der Ordner
/dags
,/data
und/plugins
aus dem Bucket der Umgebung. - Fernet-Schlüssel der Umgebung.
- Andere Informationen zur Konfiguration der Umgebung, z. B. Skalierungs- und Leistungsparameter der Umgebung. Cloud Composer verwendet diese Informationen nicht, wenn Snapshots geladen werden.
Welche Daten werden aus Snapshots geladen?
Cloud Composer lädt die folgenden Daten aus Snapshots:
- Airflow-Konfigurationsüberschreibungen.
- Umgebungsvariablen.
Benutzerdefinierte PyPI-Pakete (es sei denn, Sie überspringen die Installation).
Die Inhalte der Airflow-Datenbank, einschließlich der Status ausgeführter Aufgaben und des Verlaufs von DAG-Ausführungen.
Der Inhalt der Ordner
/dags
,/data
und/plugins
aus dem Snapshot wird in den Bucket der Umgebung geladen.Der Fernet-Schlüssel aus dem Snapshot wird verwendet, um die Daten aus dem Snapshot mit dem eigenen Fernet-Schlüssel der Umgebung neu zu verschlüsseln. Der Fernet-Schlüssel der Umgebung bleibt unverändert.
Cloud Composer speichert zwar einige Informationen zur Konfiguration der Umgebung in Snapshots, diese werden jedoch nicht beim Laden von Snapshots verwendet. Die folgenden Parameter Ihrer Umgebung ändern sich nicht, wenn Sie einen Snapshot laden:
- Umgebungskonfiguration, z. B. Parameter für die Umgebungsskalierung und Leistung.
- Netzwerkkonfiguration der Umgebung.
- Inhalte des Bucket der Umgebung außerhalb der Ordner
/dags
,/data
und/plugins
. - Umgebungslabels.
Alle Einstellungen, die Sie in der Cloud Composer-Infrastruktur ohne Verwendung der Cloud Composer API angewendet haben, gehen möglicherweise verloren, wenn Sie einen Snapshot laden.
Teilweise abgeschlossene Vorgänge
Wenn Sie einen Snapshot laden, kann der Vorgang erfolgreich, fehlgeschlagen oder teilweise abgeschlossen sein:
- Bei erfolgreichen Vorgängen werden alle Daten aus dem Snapshot geladen.
- Bei fehlgeschlagenen Vorgängen werden keine Änderungen vorgenommen.
- Bei teilweise abgeschlossenen Vorgängen wird eine Teilmenge der Daten aus dem Snapshot geladen. Solche Vorgänge werden als fehlgeschlagen gemeldet, aber die Fehlermeldung gibt an, welche Daten erfolgreich geladen wurden. Wenn beispielsweise PyPI-Pakete installiert sind, aber Überschreibungen von Airflow-Konfigurationsoptionen nicht erfolgreich waren, wird dies in der Fehlermeldung angegeben.
Bei einem teilweise abgeschlossenen Vorgang können Sie versuchen, denselben Snapshot noch einmal zu laden. Cloud Composer überspringt Schritte, die beim vorherigen Versuch erfolgreich waren. Wenn beispielsweise ein Vorgang aufgrund eines Zeitlimits fehlgeschlagen ist, die Datenbank aber erfolgreich geladen wurde, wird die Datenbank beim nächsten Versuch nicht noch einmal geladen.
Hinweise
Snapshots werden in Cloud Composer 2 ab Version 2.0.9 unterstützt. Cloud Composer 1 unterstützt das Speichern von Umgebungs-Snapshots in Version 1.18.5 und höher.
Durch Snapshots wird keine Umgebung erstellt. Wenn Sie einen Snapshot aus einer Umgebung in eine andere Umgebung laden möchten, müssen Sie zuerst eine neue Umgebung erstellen und dann den Snapshot in diese Umgebung laden.
Sie können keine Snapshots in Umgebungen mit Fehlerstatus laden. Solche Umgebungen können nicht durch das Laden eines Snapshots korrigiert werden. Sie können weiterhin einen vorhandenen Snapshot in eine neue Umgebung laden.
Sie können Snapshots nur in die gleiche oder eine spätere Version von Cloud Composer oder Airflow laden. Sie können beispielsweise keinen Snapshot aus Cloud Composer 2.8.4 in eine Umgebung mit Cloud Composer 2.8.3 laden. Ein weiteres Beispiel: Sie können keinen Snapshot aus Airflow 2.7.3 in Airflow 2.6.3 laden.
Durch Snapshots wird die Cloud Composer-Version nicht geändert. Wenn Sie Ihre Umgebung auf eine neuere Version von Cloud Composer aktualisieren und dann einen Snapshot aus einer früheren Version laden, behält Ihre Umgebung die aktuelle Version von Cloud Composer bei. Wenn Sie beispielsweise einen Snapshot aus Cloud Composer 2.8.3 in Cloud Composer 2.8.4 laden, wird die Umgebung nicht auf Cloud Composer 2.8.3 zurückgesetzt.
Die maximale Größe der Airflow-Datenbank, die Snapshots unterstützt, beträgt 20 GB. Wenn die Datenbank Ihrer Umgebung mehr als 20 GB umfasst, reduzieren Sie die Größe der Airflow-Datenbank, bevor Sie einen Snapshot speichern.
Die Gesamtzahl der Objekte in den Ordnern
/dags
,/plugins
und/data
im Bucket der Umgebung muss kleiner als 100.000 sein,damit Snapshots erstellt werden können.Wenn Sie den XCom-Mechanismus zum Übertragen von Dateien verwenden, achten Sie darauf, dass Sie ihn gemäß den Airflow-Richtlinien verwenden. Die Übertragung großer Dateien oder einer großen Anzahl von Dateien mit XCom wirkt sich auf die Leistung der Airflow-Datenbank aus und kann zu Fehlern beim Laden von Snapshots oder beim Aktualisieren Ihrer Umgebung führen. Erwägen Sie die Verwendung von Alternativen wie Cloud Storage, um große Datenmengen zu übertragen.
Die maximale Länge des Namens eines Objekts im Bucket der Umgebung darf 1.024 Zeichen nicht überschreiten. Andernfalls können keine Snapshots erstellt werden.
Wenn Sie Snapshots an einem Speicherort außerhalb des Buckets Ihrer Umgebung speichern, muss das Dienstkonto Ihrer Umgebung Lese- und Schreibberechtigungen für den angegebenen Speicherort haben. Die Rolle „Storage-Objekt-Administrator“ hat beispielsweise solche Berechtigungen. Sie können sie auf ein Projekt oder einen bestimmten Bucket anwenden.
Das Erstellen und Speichern von Snapshots verursacht zusätzliche Kosten im Zusammenhang mit Cloud Storage. Weitere Informationen finden Sie unter Preise.
Umgebungs-Snapshot speichern
Cloud Composer speichert Umgebungssnapshots in einem Unterordner relativ zum angegebenen Ordner.
Der Ordnername enthält die Projekt-ID, den Standort der Umgebung, den Namen der Umgebung und den Zeitstempel, an dem der Snapshot gespeichert wurde. Beispiel: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.
Console
So erstellen Sie einen Snapshot Ihrer Umgebung:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Klicken Sie auf Snapshot speichern.
Wählen Sie im Dialogfeld Snapshot speichern aus, wo der Snapshot gespeichert werden soll:
Wenn Sie den Snapshot im Ordner
/snapshots
im Bucket der Umgebung speichern möchten, wählen Sie Snapshot-Ordner im Bucket der Umgebung verwenden (Standard) aus.Wenn Sie den Snapshot im benutzerdefinierten Ordner speichern möchten, wählen Sie Benutzerdefinierten Ordner in einem anderen Bucket verwenden aus und geben Sie einen Speicherort an.
Klicken Sie auf Speichern.
gcloud
Mit dem Befehl gcloud composer environments snapshots save
wird ein Snapshot Ihrer Umgebung gespeichert.
- Das Argument
snapshot-location
gibt einen Ordner an, in dem der Snapshot gespeichert wird. Snapshots werden standardmäßig im Ordner/snapshots
im Bucket Ihrer Umgebung gespeichert. Beispiel:gs://us-central1-example-916807e1-bucket/snapshots
. Sie können auch einen beliebigen anderen Ordner angeben.
Führen Sie Folgendes aus, um einen Snapshot Ihrer Umgebung zu speichern:
gcloud composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.- Optional:
SNAPSHOTS_FOLDER
mit dem URI eines Bucket-Ordners, in dem der Snapshot gespeichert werden soll. Wenn Sie dieses Argument weglassen, speichert Cloud Composer den Snapshot im Ordner/snapshots
im Bucket Ihrer Umgebung.
Im folgenden Beispiel wird der Standardspeicherort verwendet:
gcloud composer environments snapshots save \
example-environment \
--location us-central1
Im folgenden Beispiel wird in einem benutzerdefinierten Ordner gespeichert:
gcloud composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
Erstellen Sie eine API-Anfrage
environments.saveSnapshot
.Geben Sie im Anfragetext im Feld
snapshotLocation
den Ordner an, in dem Sie den Snapshot speichern möchten.
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
Ersetzen Sie:
SNAPSHOTS_FOLDER
durch den URI eines Bucket-Ordners, in dem der Snapshot gespeichert werden soll.
Beispiel:
// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
Terraform
Es ist nicht möglich, Umgebungs-Snapshots mit Terraform zu speichern und zu laden.
Das Speichern und Laden von Snapshots sind Aktionen, die für eine Umgebung ausgeführt werden. Die resultierenden Snapshots sind nicht Teil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Cloud Composer-Umgebung verwaltet, können Sie keine Umgebungssnapshots damit speichern oder laden.
Umgebungs-Snapshot laden
Stellen Sie sich folgende Situation vor: Angenommen, catch-up ist aktiviert und Airflow führt einen DAG nach einem Zeitplan zwischen dem Zeitpunkt, zu dem der Snapshot erstellt wurde, und dem Zeitpunkt, zu dem er geladen wurde, aus. In diesem Fall hat Airflow nach dem Laden des Snapshots keine Informationen zur DAG-Ausführung. Daher wird der DAG noch einmal für denselben Zeitraum und dieselben Daten ausgeführt.
Sehen wir uns ein weiteres Beispiel an: eine DAG, die täglich ausgeführt wird. Sie erstellen einen Snapshot, Airflow führt diesen DAG aus und Sie laden den Snapshot am selben Tag. In diesem Fall führt Airflow den DAG noch einmal aus, auch wenn „Catch-up“ deaktiviert ist.
Console
So laden Sie einen Snapshot in Ihre Umgebung:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.
Klicken Sie auf Snapshot laden.
Klicken Sie im Dialogfeld Snapshot laden auf Durchsuchen.
Wählen Sie einen Ordner aus, in dem der Snapshot gespeichert werden soll. Der Name des Ordners enthält die ID Ihres Projekts, den Standort der Umgebung und den Zeitstempel, an dem der Snapshot gespeichert wurde. Beispiel:
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
Optional: Wenn Sie die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot überspringen möchten, wählen Sie Installation von PyPI-Paketen überspringen aus. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, werden diese benutzerdefinierten Pakete nicht von Cloud Composer installiert.
Klicken Sie auf Laden und warten Sie, bis Cloud Composer den Snapshot geladen hat.
gcloud
Mit dem Befehl gcloud composer environments snapshots load
wird ein Snapshot in Ihre Umgebung geladen.
Das Argument
--snapshot-path
gibt einen Ordner an, in dem sich der Snapshot befindet.Der Name des Ordners enthält die ID Ihres Projekts, den Speicherort der Umgebung und den Zeitstempel, wann der Snapshot gespeichert wurde. Beispiel:
gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
(Optional) Mit dem Argument
--skip-pypi-packages-installation
wird die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot übersprungen. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, werden diese benutzerdefinierten Pakete nicht von Cloud Composer installiert.
gcloud composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Ersetzen Sie:
DESTINATION_ENVIRONMENT_NAME
durch den Namen der Umgebung, in die Sie den Snapshot laden möchten.LOCATION
durch die Region, in der sich die Umgebung befindet.SNAPSHOT_PATH
durch den URI eines Buckets, gefolgt vom Pfad zum Snapshot.
Beispiel:
gcloud composer environments snapshots load \
example-environment \
--location us-central1 \
--snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"
API
Erstellen Sie eine API-Anfrage
environments.loadSnapshot
.Geben Sie im Anfragetext im Feld
snapshotPath
den URI eines Buckets gefolgt vom Pfad zum Snapshot an. Der Name des Ordners enthält die ID Ihres Projekts, den Speicherort der Umgebung und den Zeitstempel, an dem der Snapshot gespeichert wurde. Beispiel:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
Optional: Geben Sie im Anfragetext im Feld
skipPypiPackagesInstallation
an, ob Cloud Composer die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot überspringen soll. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, werden diese benutzerdefinierten Pakete nicht von Cloud Composer installiert.Dieses Feld ist optional. Wenn Sie dieses Feld weglassen, installiert Cloud Composer PyPI-Pakete aus dem Snapshot.
{
"snapshotPath": "SNAPSHOT_PATH"
}
Ersetzen Sie:
SNAPSHOT_PATH
durch den URI eines Bucket-Ordners, in dem der Snapshot gespeichert werden soll.
Beispiel:
// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot
{
"snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
"skipPypiPackagesInstallation": "False"
}
Terraform
Es ist nicht möglich, Umgebungssnapshots mit Terraform zu speichern und zu laden.
Das Speichern und Laden von Snapshots sind Aktionen, die für eine Umgebung ausgeführt werden. Die resultierenden Snapshots sind nicht Teil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Cloud Composer-Umgebung verwaltet, können Sie keine Umgebungssnapshots damit speichern oder laden.