Umgebungs-Snapshots speichern und laden

Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 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 Umgebungssnapshots wird der Status Ihrer Umgebung gespeichert. Sie können Umgebungssnapshots nach Bedarf speichern und laden.

Sie können Snapshots für Folgendes verwenden:

  • Umgebung auf einen früheren Status zurücksetzen Erstellen Sie mit Snapshots Sicherungen Ihrer Umgebung und laden Sie dann einen der Snapshots, um Ihre Umgebung wiederherzustellen. Sie können beispielsweise einen Updatevorgang 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 Managed Airflow verwendet wird, und wenden Sie dann 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.

Speichern von Snapshots

Ein Umgebungssnapshot 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. Umgebungssnapshots sind nicht inkrementell. Sie können jeden Snapshot unabhängig von anderen Snapshots verwenden.

In Managed Airflow werden Snapshots nicht gelöscht, wenn Sie Ihre Umgebung löschen.

Standardmäßig werden Snapshots in Managed Airflow im Ordner snapshots/ im Bucket Ihrer Umgebung gespeichert. Sie können beim Erstellen eines Snapshots auch einen benutzerdefinierten Speicherort angeben.

In der Cloud Storage-UI werden Daten zur besseren Übersicht als Ordner angezeigt, Buckets haben jedoch eine Flat-File-Struktur. Dies ändert nichts daran, wie Sie Snapshots in der Google Cloud Console speichern und laden, aber Sie sollten dies berücksichtigen, wenn Sie Vorgänge direkt für die Dateien in Ihrem Bucket ausführen. Weitere Informationen finden Sie unter Objektnamespace.

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, prüfen Sie, ob die Zugriffsberechtigungen dafür in Ihrem Projekt richtig konfiguriert sind. Achten Sie beim Zuweisen von Berechtigungen darauf, dass das Dienst konto der Umgebung genügend Berechtigungen hat, um Snapshots aus dem Bucket zu speichern und zu laden.

In Snapshots gespeicherte Daten

In Managed Airflow werden die folgenden Daten in Snapshots gespeichert:

  • Airflow-Konfigurationsüberschreibungen
  • Umgebungsvariablen
  • Liste der benutzerdefinierten PyPI-Pakete als Anforderungen
  • Eine Sicherung der Airflow-Datenbank, einschließlich der Status ausgeführter Aufgaben und des DAG-Ausführungsverlaufs
  • Eine Sicherung der Ordner /dags, /data und /plugins aus dem Bucket der Umgebung
  • Fernet-Schlüssel der Umgebung
  • Weitere Informationen zur Konfiguration der Umgebung, z. B. Skalierungs- und Leistungsparameter der Umgebung In Managed Airflow werden diese Informationen beim Laden von Snapshots nicht verwendet.

Aus Snapshots geladene Daten

In Managed Airflow werden die folgenden Daten aus Snapshots geladen:

  • Airflow-Konfigurationsüberschreibungen
  • Umgebungsvariablen
  • Benutzerdefinierte PyPI-Pakete (sofern Sie die Installation nicht überspringen)

  • Die Inhalte der Airflow-Datenbank, einschließlich der Status ausgeführter Aufgaben und des DAG-Ausführungsverlaufs

  • Die Inhalte der Ordner /dags, /data und /plugins aus dem Snapshot werden in den Bucket der Umgebung geladen.

  • Mit dem Fernet-Schlüssel aus dem Snapshot werden die Daten aus dem Snapshot mit dem eigenen Fernet-Schlüssel der Umgebung neu verschlüsselt. Der Fernet-Schlüssel der Umgebung bleibt unverändert.

In Managed Airflow werden zwar einige Informationen zur Konfiguration der Umgebung in Snapshots gespeichert, diese werden jedoch beim Laden von Snapshots nicht verwendet. Die folgenden Parameter Ihrer Umgebung ändern sich nicht, wenn Sie einen Snapshot laden:

  • Umgebungskonfiguration, z. B. Skalierungs- und Leistungsparameter der Umgebung
  • Netzwerkkonfiguration der Umgebung
  • Inhalte des Buckets der Umgebung außerhalb der Ordner /dags, /data und /plugins
  • Umgebungslabels

Alle Einstellungen, die Sie in der Managed Airflow-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 wurden, die Überschreibungen der Airflow-Konfigurationsoptionen jedoch nicht erfolgreich waren, wird dies in der Fehlermeldung angegeben.

Bei einem teilweise abgeschlossenen Vorgang können Sie versuchen, denselben Snapshot noch einmal zu laden. In Managed Airflow werden Schritte übersprungen, die beim vorherigen Versuch erfolgreich waren. Wenn ein Vorgang beispielsweise aufgrund eines Zeitlimits fehlgeschlagen ist, die Datenbank aber erfolgreich geladen wurde, wird die Datenbank beim nächsten Versuch nicht noch einmal geladen.

Hinweis

  • Snapshots werden in Managed Airflow (Gen 2) ab Version 2.0.9 unterstützt. In Managed Airflow (Legacy Gen 1) können Umgebungssnapshots ab Version 1.18.5 gespeichert werden.

  • 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 darin laden.

  • Sie können keine Snapshots in Umgebungen laden, die sich im Fehlerstatus befinden. Solche Umgebungen können nicht durch das Laden eines Snapshots korrigiert werden. Sie können jedoch weiterhin einen vorhandenen Snapshot in eine neue Umgebung laden.

  • Sie können Snapshots nur in derselben oder einer neueren Version von Airflow laden. Sie können beispielsweise keinen Snapshot aus Airflow 2.9.3 in Airflow 2.7.3 laden.

  • Es ist möglich, einen Snapshot aus einem neueren Airflow-Build derselben Airflow-Version in eine Umgebung mit einem älteren Build zu laden. Sie können beispielsweise airflow-2.9.3-build.6 in airflow-2.9.3-build.5 laden. Wir empfehlen, Snapshots nur dann in ältere Builds zu laden, wenn dies erforderlich ist.

  • 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, verkleinern Sie die Airflow-Datenbank, bevor Sie einen Snapshot speichern.

  • Die Gesamtzahl der Objekte in den Ordnern /dags, /plugins und /data im Bucket der Umgebung muss weniger als 100.000 betragen,um Snapshots zu erstellen.

  • Wenn Sie den XCom-Mechanismus zum Übertragen von Dateien verwenden, achten Sie darauf, dass Sie ihn gemäß den Airflow-Richtlinien verwenden. Das Übertragen 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 Alternativen wie Cloud Storage, um große Datenmengen zu übertragen.

  • Der Name eines Objekts im Bucket der Umgebung darf maximal 1.024 Zeichen lang sein. 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.

Umgebungssnapshot speichern

In Managed Airflow werden Umgebungssnapshots in einem Unterordner relativ zum angegebenen Ordner gespeichert. 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:

  1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

    Zur Seite „Umgebungen“

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Klicken Sie auf Snapshot speichern.

  4. 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.

  5. 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. Standardmäßig werden Snapshots im Ordner /snapshots im Bucket Ihrer Umgebung gespeichert. Beispiel: gs://us-central1-example-916807e1-bucket/snapshots. Sie können auch einen 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 durch den URI eines Bucket-Ordners, in dem der Snapshot gespeichert werden soll. Wenn Sie dieses Argument weglassen, wird der Snapshot in Managed Airflow im Ordner /snapshots im Bucket Ihrer Umgebung gespeichert.

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

  1. Erstellen Sie eine environments.saveSnapshot API-Anfrage.

  2. 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, Umgebungssnapshots in Terraform zu speichern und zu laden.

Das Speichern und Laden von Snapshots sind Aktionen, die für eine Umgebung ausgeführt werden, und die resultierenden Snapshots sind nicht Teil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Managed Airflow-Umgebung verwaltet, können Sie Umgebungssnapshots nicht darüber speichern oder laden.

Umgebungssnapshot laden

Betrachten Sie die folgende Situation. Die Aufholfunktion ist beispielsweise aktiviert und Airflow führt einen DAG nach Zeitplan zwischen dem Zeitpunkt, an dem der Snapshot erstellt wurde, und dem Zeitpunkt, an dem er geladen wurde, aus. Wenn Sie in diesem Fall den Snapshot laden, hat Airflow keine Informationen zur DAG-Ausführung, die stattgefunden hat. Daher führt Airflow den DAG noch einmal für denselben Zeitraum und dieselben Daten aus.

Ein weiteres Beispiel: Ein DAG wird täglich ausgeführt. Sie erstellen einen Snapshot, dann führt Airflow diesen DAG aus und danach laden Sie den Snapshot am selben Tag. In diesem Fall führt Airflow den DAG noch einmal aus, auch wenn die Aufholfunktion deaktiviert ist.

Console

So laden Sie einen Snapshot in Ihre Umgebung:

  1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

    Zur Seite „Umgebungen“

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Klicken Sie auf Snapshot laden.

  4. Klicken Sie im Dialogfeld Snapshot laden auf Durchsuchen.

  5. Wählen Sie einen Ordner aus, in dem der Snapshot gespeichert ist. 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.

  6. (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, werden diese benutzerdefinierten Pakete in Managed Airflow nicht installiert.

  7. Klicken Sie auf Laden und warten Sie, bis der Snapshot in Managed Airflow geladen wurde.

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 Standort 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) 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, werden diese benutzerdefinierten Pakete in Managed Airflow nicht 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

  1. Erstellen Sie eine environments.loadSnapshot API-Anfrage.

  2. 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 Standort 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.

  3. (Optional) Geben Sie im Anfragetext im Feld skipPypiPackagesInstallation an, ob die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot in Managed Airflow übersprungen werden soll. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen, werden diese benutzerdefinierten Pakete in Managed Airflow nicht installiert.

    Dieses Feld ist optional. Wenn Sie dieses Feld weglassen, werden in Managed Airflow PyPI-Pakete aus dem Snapshot installiert.

{
  "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, und die resultierenden Snapshots sind nicht Teil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Managed Airflow-Umgebung verwaltet, können Sie Umgebungssnapshots nicht darüber speichern oder laden.

Nächste Schritte