Umgebungs-Snapshots speichern und laden

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite wird beschrieben, wie Sie den Zustand Ihrer Umgebung mit Umgebungs-Snapshots speichern und laden.

Sie können Snapshots zusammen mit Cloud Scheduler verwenden, um automatisch Snapshots Ihrer Umgebung zu speichern. Weitere Informationen finden Sie unter Geplante Snapshots konfigurieren.

Umgebungs-Snapshots

Umgebungs-Snapshots speichern den Status Ihrer Umgebung. Sie können Umgebungs-Snapshots bei Bedarf speichern und laden.

Mit Snapshots können Sie Folgendes tun:

  • Setzen Sie Ihre Umgebung auf einen früheren Zustand zurück. Erstellen Sie mithilfe von Snapshots Sicherungen Ihrer Umgebung und laden Sie dann einen der Snapshots, um Ihre Umgebung wiederherzustellen. Sie können beispielsweise einen Aktualisierungsvorgang rückgängig machen, bei dem PyPI-Pakete installiert oder Airflow-Konfigurationsoptionen überschrieben werden, auch nachdem die Umgebung erfolgreich aktualisiert wurde.

  • Führen Sie Upgrades und Kopierumgebungen durch. Erstellen Sie einen Snapshot einer vorhandenen Umgebung und dafür eine neue Umgebung mit derselben oder einer höheren Version von Cloud Composer. Wenden Sie dann den Snapshot auf diese neue Umgebung an. Dieses Verfahren ähnelt dem Migrationsvorgang. Achten Sie darauf, dass DAGs vor dem Snapshot pausiert werden, 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 die Umgebung löschen.

Standardmäßig speichert Cloud Composer Snapshots im Ordner snapshots/ des Buckets in Ihrer Umgebung. Sie können auch einen benutzerdefinierten Speicherort angeben, wenn Sie einen Snapshot erstellen.

Sicherheitsaspekte für Snapshots

Um dieses Sicherheitsrisiko zu minimieren, können Sie vertrauliche Informationen, die von Airflow-DAGs verwendet werden, wie 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. Achten Sie beim Speichern von Umgebungs-Snapshots in einem benutzerdefinierten Bucket darauf, dass die Zugriffsberechtigungen dafür in Ihrem Projekt richtig konfiguriert sind. Achten Sie beim Zuweisen von Berechtigungen darauf, dass das Dienstkonto der Umgebung ausreichend Berechtigungen zum Speichern und Laden von Snapshots aus dem Bucket hat.

Welche Daten in Snapshots gespeichert werden

Cloud Composer speichert die folgenden Daten in Snapshots:

  • Airflow-Konfigurationsüberschreibungen.
  • Umgebungsvariablen.
  • Liste der benutzerdefinierten PyPI-Pakete als Anforderungen.
  • Eine Sicherung der Airflow-Datenbank, einschließlich Status der ausgeführten Aufgaben und DAG-Ausführungsverlauf.
  • Eine Sicherung der Ordner /dags, /data und /plugins aus dem Umgebungs-Bucket.
  • fernetschlüssel der Umgebung.
  • Weitere Informationen zur Konfiguration der Umgebung, z. B. Skalierungs- und Leistungsparameter Cloud Composer verwendet diese Informationen nicht, wenn Snapshots geladen werden.

Welche Daten aus Snapshots geladen werden

Cloud Composer lädt die folgenden Daten aus Snapshots:

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

  • Der Inhalt der Airflow-Datenbank, einschließlich Status der ausgeführten Aufgaben und DAG-Ausführungsverlauf.

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

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

Obwohl Cloud Composer einige Informationen zur Konfiguration der Umgebung in Snapshots speichert, wird es beim Laden von Snapshots nicht verwendet. Die folgenden Parameter Ihrer Umgebung ändern sich nicht, wenn Sie einen Snapshot laden:

  • Umgebungskonfiguration, z. B. Umgebungsskalierung und Leistungsparameter.
  • Netzwerkkonfiguration der Umgebung.
  • Inhalt der Umgebung der Umgebung außerhalb der Ordner /dags, /data und /plugins.
  • Umgebungslabels.

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

Informationen zu teilweise abgeschlossenen Vorgängen

Beim Laden eines Snapshots kann der Vorgang erfolgreich, fehlgeschlagen oder teilweise abgeschlossen sein:

  • Bei erfolgreichen Vorgängen werden alle Daten aus dem Snapshot geladen.
  • Fehlgeschlagene Vorgänge führen nicht zu Änderungen.
  • Bei teilweise abgeschlossenen Vorgängen werden eine Teilmenge der Daten aus dem Snapshot geladen. Solche Vorgänge werden als fehlgeschlagen gemeldet, aber die Fehlermeldung zeigt an, welche Daten erfolgreich geladen wurden. Wenn z. B. PyPI-Pakete installiert sind, die Überschreibung von Airflow-Konfigurationsoptionen jedoch nicht erfolgreich war, wird in der Fehlermeldung darauf hingewiesen.

Bei einem teilweise abgeschlossenen Vorgang können Sie versuchen, denselben Snapshot noch einmal zu laden. Cloud Composer überspringt die Schritte, die beim vorherigen Versuch erfolgreich waren. Wenn ein Vorgang beispielsweise bei einer Zeitüberschreitung fehlgeschlagen ist, aber die Datenbank erfolgreich geladen wurde, wird die Datenbank im nächsten Versuch nicht noch einmal geladen.

Hinweis

  • Snapshots werden in Cloud Composer 2.0.9 und höher unterstützt. Cloud Composer 1 unterstützt das Speichern von Umgebungs-Snapshots in 1.18.5.

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

  • Sie können keine Snapshots in Umgebungen laden, die den Fehlerstatus haben. Es ist nicht möglich, solche Umgebungen durch Laden eines Snapshots zu beheben. Sie können einen vorhandenen Snapshot weiterhin in eine neue Umgebung laden.

  • Sie können Snapshots nur in dieselbe oder eine spätere Version von Cloud Composer oder Airflow laden. Beispielsweise können Sie keinen Snapshot von Cloud Composer 2.0.2 in eine Umgebung mit Cloud Composer 2.0.1 laden. Als weiteres Beispiel können Sie keinen Snapshot von Airflow 2.2.3 in Airflow 2.1.4 laden.

  • Snapshots ändern die Cloud Composer-Version nicht. Wenn Sie für Ihre Umgebung ein Upgrade auf eine neuere Version von Cloud Composer durchführen und dann einen Snapshot aus einer früheren Version laden, bleibt die aktuelle Version von Cloud Composer in Ihrer Umgebung erhalten. Wenn Sie beispielsweise einen Snapshot von Cloud Composer 2.0.1 in Cloud Composer 2.0.2 laden, wird die Umgebung nicht in Cloud Composer 2.0.1 umgewandelt.

  • Die maximale Größe der Airflow-Datenbank, die Snapshots unterstützt, ist 20 GB. Wenn Ihre Umgebung mehr als 20 GB benötigt, reduzieren Sie die Größe der Airflow-Datenbank, bevor Sie einen Snapshot speichern.

  • 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 Standort haben. Die Rolle Storage-Objekt-Administrator hat beispielsweise diese Berechtigungen. Sie können sie auf ein Projekt oder einen bestimmten Bucket anwenden.

Umgebungs-Snapshot speichern

Cloud Composer speichert Umgebungs-Snapshots in einem Unterordner, relativ zum angegebenen Ordner. Der Ordnername enthält die Projekt-ID, den Standort und den Namen der Umgebung sowie 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 Umgebungs-Bucket speichern möchten, wählen Sie Snapshot-Ordner im Umgebungs-Bucket 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 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 in Ihrem Umgebungs-Bucket gespeichert. Beispiel: gs://us-central1-example-916807e1-bucket/snapshots. Sie können auch einen anderen Ordner angeben.

Führen Sie den 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 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 in Ihrem Umgebungs-Bucket.

Im folgenden Beispiel wird der Standardspeicherort verwendet:

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

Im folgenden Beispiel wird die Datei 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 das Feld snapshotLocation an, in dem Sie den Snapshot speichern möchten.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Ersetzen Sie:

  • SNAPSHOTS_FOLDER mit dem 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 Teil der Umgebung. Da mit Terraform nur die Cloud Composer-Umgebung verwaltet wird, können Sie keine Umgebungs-Snapshots daraus speichern oder laden.

Umgebungs-Snapshot laden

Ziehen Sie folgende Situationen in Betracht: Beispiel: Die Funktion Catch-up ist aktiviert und Airflow führt einen DAG nach einem Zeitplan zwischen dem Zeitpunkt der Erstellung des Snapshots und dem Zeitpunkt des Ladens aus. In diesem Fall hat Airflow nach dem Laden des Snapshots keine Informationen zur ausgeführten DAG-Ausführung. Daher wird der DAG für dieselbe Zeit und dieselben Daten noch einmal ausgeführt.

Ein weiteres Beispiel ist ein DAG mit täglichem Zeitplan. Sie erstellen einen Snapshot, der dann von Airflow ausgeführt wird. Anschließend laden Sie den Snapshot am selben Tag. In diesem Fall führt Airflow den DAG noch einmal aus, auch wenn der Lookup deaktiviert ist.

Console

So laden Sie einen Snapshot in die 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 Suchen.

  5. Wählen Sie einen Ordner aus, in dem der Snapshot gespeichert wird. Der Name des Ordners enthält die ID des Projekts, den Standort und die Umgebung, in der 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 laden, installiert Cloud Composer diese benutzerdefinierten Pakete nicht.

  7. Klicken Sie auf Load (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.

    Im Namen des Ordners werden die ID des Projekts, die Umgebung und der Zeitstempel beim Speichern des Snapshots aufgeführt. Beispiel: gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00

  • Optional: Das Argument --skip-pypi-packages-installation überspringt die Installation von benutzerdefinierten PyPI-Paketen aus dem Snapshot. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, installiert Cloud Composer diese benutzerdefinierten Pakete nicht.

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 die Sie den Snapshot laden möchten.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • SNAPSHOT_PATH mit dem 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. Gib im Anfragetext das Feld snapshotPath im URI des Buckets gefolgt vom Pfad zum Snapshot an. Der Name des Ordners enthält die ID des Projekts, den Ort und die Zeitstempel des Projekts, in 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 Cloud Composer die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot überspringen muss. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, installiert Cloud Composer diese benutzerdefinierten Pakete nicht.

    Dieses Feld ist optional. Wenn Sie dieses Feld weglassen, installiert Cloud Composer PyPI-Pakete aus dem Snapshot.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Ersetzen Sie:

  • SNAPSHOT_PATH mit dem 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

Mit Terraform können Sie Umgebungs-Snapshots nicht speichern und laden.

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

Weitere Informationen