Umgebungs-Snapshots speichern und laden

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite wird erläutert, wie Sie den Status Ihrer Umgebung mithilfe von Umgebungs-Snapshots speichern und laden.

Sie können Ihre Umgebung so konfigurieren, dass Snapshots automatisch gespeichert werden. Weitere Informationen finden Sie unter Geplante Snapshots konfigurieren.

Informationen zu Umgebungs-Snapshots

In Umgebungs-Snapshots wird der Status Ihrer Umgebung gespeichert. Sie können Umgebungs-Snapshots bei Bedarf speichern und laden.

Mit Snapshots können Sie:

  • Stellen Sie Ihre Umgebung in einem früheren Zustand wieder her. Erstellen Sie Sicherungen Ihrer Umgebung mit Snapshots und laden Sie dann einen der Snapshots, um die Umgebung wiederherzustellen. Beispielsweise können Sie für einen Aktualisierungsvorgang ein Rollback durchführen, bei dem PyPI-Pakete installiert oder Airflow-Konfigurationsoptionen überschrieben werden, auch nachdem Ihre Umgebung erfolgreich aktualisiert wurde.

  • Führen Sie parallele Upgrades durch und kopieren Sie die Umgebungen. Erstellen Sie einen Snapshot einer vorhandenen Umgebung und dann eine neue Umgebung, die dieselbe oder eine neuere Version von Cloud Composer verwendet. Wenden Sie dann den Snapshot auf diese neue Umgebung an. Dieses Verfahren ähnelt dem Migrieren. Halten Sie DAGs unbedingt an, bevor Sie den Snapshot erstellen, um doppelte DAG-Ausführungen zu vermeiden.

So werden Snapshots gespeichert

Ein Umgebungs-Snapshot ist ein Satz 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 Snapshots beim Löschen der Umgebung nicht.

Standardmäßig speichert Cloud Composer Snapshots im Ordner snapshots/ im Bucket Ihrer Umgebung. Sie können beim Erstellen eines Snapshots auch einen benutzerdefinierten Speicherort angeben.

Während die Daten in der Cloud Storage-Benutzeroberfläche der Einfachheit halber als Ordner angezeigt werden, arbeiten Buckets in einer flachen Dateistruktur. Dies hat keinen Einfluss darauf, wie Sie Snapshots in der Google Cloud Console speichern und laden. Dies sollten Sie jedoch beachten, wenn Sie Vorgänge direkt an den Dateien in Ihrem Bucket ausführen. Weitere Informationen finden Sie unter Objekt-Namespace.

Sicherheitsaspekte für Snapshots

Um dieses Sicherheitsrisiko zu mindern, 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 Umgebungs-Snapshots in einem benutzerdefinierten Bucket speichern, müssen die Zugriffsberechtigungen dafür im Projekt richtig konfiguriert sein. Achten Sie beim Zuweisen von Berechtigungen darauf, dass das Dienstkonto der Umgebung die nötigen Berechtigungen hat, um Snapshots aus dem Bucket zu speichern und zu laden.

Welche Daten werden in Snapshots gespeichert?

Cloud Composer speichert die folgenden Daten in Snapshots:

  • Airflow-Konfigurationsüberschreibungen.
  • Umgebungsvariablen.
  • Liste benutzerdefinierter PyPI-Pakete als Anforderungen.
  • Sicherung der Airflow-Datenbank, einschließlich der Status der ausgeführten 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. die Skalierungs- und Leistungsparameter der Umgebung Cloud Composer verwendet diese Informationen beim Laden von Snapshots nicht.

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

  • Der Inhalt der Airflow-Datenbank, einschließlich der Status ausgeführter Aufgaben und des DAG-Ausführungsverlaufs.

  • Der Inhalt der Ordner /dags, /data und /plugins aus dem Snapshot wird in den Bucket der Umgebung geladen.

  • Der Ferrnet-Schlüssel aus dem Snapshot wird verwendet, um die Daten aus dem Snapshot mit dem eigenen Ferrnet-Schlüssel der Umgebung neu zu verschlüsseln. Der Frennet-Schlüssel der Umgebung bleibt unverändert.

Obwohl Cloud Composer einige Informationen zur Konfiguration der Umgebung in Snapshots speichert, wird er beim Laden von Snapshots nicht verwendet. Die folgenden Parameter Ihrer Umgebung ändern sich beim Laden eines Snapshots nicht:

  • Umgebungskonfiguration, z. B. Parameter für Umgebungsskalierung und Leistung
  • Netzwerkkonfiguration der Umgebung.
  • Inhalt des Umgebungs-Buckets außerhalb der Ordner /dags, /data und /plugins.
  • Umgebungslabels.

Einstellungen, die Sie in der Cloud Composer-Infrastruktur ohne Verwendung der Cloud Composer API angewendet haben, können beim Laden eines Snapshots verloren gehen.

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.
  • Fehlgeschlagene Vorgänge bringen keine Änderungen mit sich.
  • Bei teilweise abgeschlossenen Vorgängen wird eine Teilmenge der Daten aus dem Snapshot geladen. Solche Vorgänge werden als fehlgeschlagen gemeldet, in der Fehlermeldung wird jedoch angezeigt, welche Daten erfolgreich geladen wurden. Wenn beispielsweise PyPI-Pakete installiert sind, die Überschreibungen der Airflow-Konfigurationsoptionen jedoch nicht erfolgreich waren, wird dies in der Fehlermeldung angezeigt.

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 einer Zeitüberschreitung fehlgeschlagen ist, die Datenbank aber erfolgreich geladen wurde, wird sie beim nächsten Versuch nicht noch einmal geladen.

Hinweise

  • Snapshots werden ab Cloud Composer 2 in der Version 2.0.9 unterstützt. Cloud Composer 1 unterstützt das Speichern von Umgebungs-Snapshots ab Version 1.18.5.

  • Snapshots erstellen keine Umgebung. 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 dorthin laden.

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

  • Sie können Snapshots nur in dieselbe oder eine neuere Version von Cloud Composer oder Airflow laden. Sie können beispielsweise keinen Snapshot von Cloud Composer 2.0.2 in eine Umgebung mit Cloud Composer 2.0.1 laden. Ein weiteres Beispiel: Sie können keinen Snapshot von Airflow 2.2.3 nach Airflow 2.1.4 laden.

  • Snapshots ändern die Cloud Composer-Version nicht. Wenn Sie ein Upgrade Ihrer Umgebung auf eine neuere Version von Cloud Composer ausführen und dann einen Snapshot von einer früheren Version laden, behält Ihre Umgebung weiterhin die aktuelle Version von Cloud Composer bei. Beispielsweise wird beim Laden eines Snapshots von Cloud Composer 2.0.1 in Cloud Composer 2.0.2 die Umgebung nicht auf Cloud Composer 2.0.1 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 benötigt, verkleinern Sie die Größe der Airflow-Datenbank, bevor Sie einen Snapshot speichern.

  • Die maximale Länge eines Objektnamens im Bucket der Umgebung darf nicht länger als 1.024 Zeichen 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 verfügt beispielsweise über solche Berechtigungen. Sie können ihn auf ein Projekt oder einen bestimmten Bucket anwenden.

  • Das Erstellen und Speichern von Snapshots verursacht zusätzliche Kosten, die mit Cloud Storage zusammenhängen. Weitere Informationen finden Sie unter Preise.

Umgebungs-Snapshot speichern

Cloud Composer speichert Umgebungs-Snapshots in einem Unterordner relativ zu dem von Ihnen angegebenen Ordner. Der Ordnername enthält die Projekt-ID, den Speicherort der Umgebung, den Namen der Umgebung und den Zeitstempel für das Speichern des Snapshots. 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:

    • Wählen Sie Snapshot-Ordner im Umgebungs-Bucket verwenden (Standard) aus, um den Snapshot im Ordner /snapshots im Bucket der Umgebung zu speichern.

    • 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 beta 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 des Buckets Ihrer Umgebung gespeichert. Beispiel: gs://us-central1-example-916807e1-bucket/snapshots. Sie können auch einen beliebigen anderen Ordner angeben.

Führen Sie folgenden Befehl aus, um einen Snapshot Ihrer Umgebung zu speichern:

gcloud beta 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, speichert Cloud Composer den Snapshot im Ordner /snapshots im Bucket Ihrer Umgebung.

Im folgenden Beispiel wird der Standardspeicherort verwendet:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1

Das folgende Beispiel wird in einem benutzerdefinierten Ordner gespeichert:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

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

  2. Geben Sie im Anfragetext im Feld snapshotLocation den Ordner an, in dem der Snapshot gespeichert werden soll.

{
  "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/v1beta1/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 aus Terraform zu speichern und zu laden.

Das Speichern und Laden von Snapshots sind Aktionen, die in einer Umgebung ausgeführt werden. Die resultierenden Snapshots sind nicht Bestandteil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Cloud Composer-Umgebung verwaltet, können Sie keine Umgebungs-Snapshots daraus speichern oder laden.

Umgebungs-Snapshot laden

Betrachten Sie die folgende Situation. Beispielsweise ist Catch-up aktiviert und Airflow führt einen DAG nach einem Zeitplan zwischen dem Zeitpunkt der Erstellung des Snapshots und dem Laden des Snapshots aus. In diesem Fall hat Airflow nach dem Laden des Snapshots keine Informationen zur durchgeführten DAG-Ausführung, sodass Airflow den DAG zur gleichen Zeit und mit denselben Daten noch einmal ausführt.

Als weiteres Beispiel betrachten Sie einen DAG, der nach einem täglichen Zeitplan ausgeführt wird. Sie erstellen einen Snapshot. Anschließend führt Airflow diesen DAG aus. Anschließend laden Sie den Snapshot am selben Tag. In diesem Fall führt Airflow den DAG noch einmal aus, auch wenn die Nachholung deaktiviert ist.

Console

So laden Sie einen Snapshot in Ihre Cloud Composer 2-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 wird. Der Name des Ordners enthält die ID Ihres Projekts, den Speicherort der Umgebung und den Zeitstempel für das Speichern des Snapshots. Beispiel: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00

  6. Optional: Wenn Sie die Installation von benutzerdefinierten PyPI-Paketen 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.

  7. Klicken Sie auf Laden und warten Sie, bis Cloud Composer den Snapshot lädt.

gcloud

Mit dem Befehl gcloud beta 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 für das Speichern des Snapshots. 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 von benutzerdefinierten PyPI-Paketen 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 beta composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Ersetzen Sie:

  • DESTINATION_ENVIRONMENT_NAME durch den Namen der Umgebung, in der 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 beta 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 API-Anfrage environments.loadSnapshot.

  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 Speicherort der Umgebung und den Zeitstempel für das Speichern des Snapshots. 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 Cloud Composer die Installation von benutzerdefinierten PyPI-Paketen aus dem Snapshot überspringen muss. 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/v1beta1/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, Umgebungs-Snapshots mit Terraform zu speichern und zu laden.

Das Speichern und Laden von Snapshots sind Aktionen, die in einer Umgebung ausgeführt werden. Die resultierenden Snapshots sind nicht Bestandteil der Definition einer Umgebung. Da Terraform nur die Konfiguration der Cloud Composer-Umgebung verwaltet, können Sie keine Umgebungs-Snapshots daraus speichern oder laden.

Nächste Schritte