Umgebungs-Snapshots speichern und laden

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

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

Umgebungs-Snapshots

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

Snapshots können für Folgendes verwendet werden:

  • Stellen Sie einen früheren Zustand Ihrer Umgebung wieder her. Erstellen Sie Sicherungen Ihrer mithilfe von Snapshots und laden Sie dann einen der Snapshots, um Ihre zu verbessern. So können Sie z. B. einen Aktualisierungsvorgang rückgängig machen, PyPI-Pakete installiert oder Airflow-Konfigurationsoptionen überschrieben, selbst nachdem Ihre Umgebung aktualisiert wurde.

  • Upgrades nebeneinander ausführen und Umgebungen kopieren Snapshot eines bestehenden Umgebung haben, erstellen Sie eine neue Umgebung, die dieselbe oder eine neuere Umgebung verwendet. Version von Cloud Composer erstellen und den Snapshot dann auf diesen neuen zu verbessern. Dieser Vorgang ähnelt dem migrieren. Pausieren Sie DAGs, bevor erstellen Sie den Snapshot, um doppelte DAG-Ausführungen zu vermeiden.

So werden Snapshots gespeichert

Ein Umgebungs-Snapshot besteht aus einer Reihe von Dateien, die den Status Ihres 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.

In Cloud Composer werden Snapshots nicht gelöscht, 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 Standort angeben wenn Sie einen Snapshot erstellen.

Während in der Cloud Storage-UI Daten der Einfachheit halber als Ordner angezeigt werden, werden Buckets in einer flachen Dateistruktur arbeiten. Das ändert nichts daran, wie Sie Snapshots in der Google Cloud Console speichern und laden. Berücksichtigen Sie dies jedoch, wenn Sie Vorgänge direkt auf die Dateien in Ihrem Bucket ausführen. Weitere Informationen finden Sie unter Objekt-Namespace.

Sicherheitsaspekte für Snapshots

Speichern Sie vertrauliche Informationen, um dieses Sicherheitsrisiko zu minimieren. der von Airflow-DAGs wie Schlüsseln oder Passwörtern in Secret Manager Weitere Informationen finden Sie unter Konfigurieren Sie Secret Manager für Ihre Umgebung.

Prüfen Sie die Sicherheitsberechtigungen für den Bucket Ihrer Umgebung. Wenn Sie dass Sie Umgebungs-Snapshots in einem benutzerdefinierten Bucket speichern, Zugriffsberechtigungen entsprechend konfiguriert. Projekt arbeiten. Achten Sie beim Zuweisen von Berechtigungen darauf, dass das Dienstkonto der Umgebung ausreichende 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 benutzerdefinierter PyPI-Pakete als Anforderungen.
  • Eine Sicherung der Airflow-Datenbank, einschließlich Status der ausgeführten Aufgaben und Verlauf der DAG-Ausführungen.
  • Eine Sicherung der Ordner /dags, /data und /plugins aus dem Bucket der Umgebung.
  • Den Fernet-Schlüssel der Umgebung.
  • Weitere Informationen zur Konfiguration der Umgebung, z. B. die 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).

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

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

  • Mit dem Fernet-Schlüssel aus dem Snapshot werden die Daten aus dem Snapshot noch einmal mit dem Fernet-Schlüssel der Umgebung verschlüsselt. Der Fenett-Schlüssel des 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 Snapshot laden:

  • Umgebungskonfiguration, z. B. Umgebungsskalierung und -leistung Parameter.
  • Die Netzwerkkonfiguration der Umgebung.
  • Inhalt des Buckets 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 kann beim Laden einer Snapshot.

Teilweise abgeschlossene Vorgänge

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

  • Bei erfolgreichen Vorgängen werden alle Daten aus dem Snapshot geladen.
  • Fehlgeschlagene Vorgänge führen zu keinen Änderungen.
  • Bei teilweise abgeschlossenen Vorgängen wird nur ein Teil der Daten aus dem Snapshot geladen. Solche Vorgänge werden als fehlgeschlagen gemeldet, aber in der Fehlermeldung wird angegeben, welche Daten erfolgreich geladen wurden. Wenn beispielsweise PyPI-Pakete installiert sind, die Überschreibungen der Airflow-Konfigurationsoptionen jedoch fehlgeschlagen sind, wird dies in der Fehlermeldung angezeigt.

Bei einem teilweise abgeschlossenen Vorgang können Sie versuchen, denselben Snapshot zu laden. noch einmal. Cloud Composer überspringt Schritte, die im vorherigen Versuch. Wenn beispielsweise ein Vorgang nach einer Zeitüberschreitung fehlschlägt, der Fehler erfolgreich geladen wurde, wird beim nächsten Versuch wieder in die Datenbank einfließen.

Hinweise

  • Snapshots werden in Cloud Composer 2 Version 2.0.9 und höher unterstützt. Cloud Composer 1 unterstützt das Speichern von Umgebungs-Snapshots für Versionen >= 1.18.5.

  • Snapshots erstellen keine Umgebung. Wenn Sie einen Snapshot aus einer in einer anderen Umgebung verwenden möchten, müssen Sie zuerst eine neue und laden Sie dann den Snapshot in diese.

  • Sie können keine Snapshots in Umgebungen mit dem Status „Fehler“ laden. Es ist Solche Umgebungen können nicht durch das Laden eines Snapshots korrigiert werden. Sie können immer noch einen vorhandenen Snapshot in eine neue Umgebung laden.

  • Snapshots können nur in derselben oder einer höheren Version von Cloud Composer oder Airflow geladen werden. Sie können beispielsweise keinen Snapshot aus Cloud Composer 2.0.2 in eine Umgebung mit Cloud Composer 2.0.1 laden. Außerdem können Sie keinen Snapshot von Airflow 2.2.3 in Airflow 2.1.4 laden.

  • Snapshots haben keine Auswirkungen auf die Cloud Composer-Version. Wenn Sie Ihre Umgebung auf eine neuere Cloud Composer-Version aktualisieren und dann einen Snapshot aus einer früheren Version laden, bleibt in Ihrer Umgebung die aktuelle Cloud Composer-Version erhalten. Wenn Sie z. B. einen Snapshot aus einer Cloud Composer 2.0.1 zu Cloud Composer 2.0.2 ändert sich nicht die Umgebung auf Cloud Composer 2.0.1 zurücksetzen.

  • Die maximale Größe der Airflow-Datenbank, die Snapshots unterstützt, ist 20 GB. Wenn die Datenbank Ihrer Umgebung über 20 GB, Reduzieren Sie die Größe der Airflow-Datenbank, bevor Sie Snapshot.

  • Die Gesamtzahl der Objekte in den Ordnern /dags, /plugins und /data im Bucket der Umgebung muss unter 100.000 liegen, damit Snapshots erstellt werden können.

  • Die maximale Länge des Objektnamens im Bucket der Umgebung darf keine länger als 1024 Zeichen sind. 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. Beispiel: Der Parameter Die Rolle Storage-Objekt-Administrator verfügt über solche Berechtigungen. Ich auf ein Projekt oder einen bestimmten Bucket anwenden können.

  • Das Erstellen und Speichern von Snapshots ist mit zusätzlichen Kosten verbunden, die mit zu Cloud Storage hinzufügen. Weitere Informationen finden Sie unter Preise.

Umgebungs-Snapshot speichern

Cloud Composer speichert Umgebungs-Snapshots in einem Unterordner, der sich relativ zum von Ihnen angegebenen Ordner befindet. Der Ordnername enthält die Projekt-ID, den Speicherort der Umgebung, den Namen der Umgebung und den Zeitstempel, zu 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 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.

  • Mit dem Argument snapshot-location wird ein Ordner angegeben, 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 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 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

Im folgenden 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 an, Ordner, 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/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 in 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 Definition einer Umgebung. Seit Terraform verwaltet nur die Konfiguration der Cloud Composer-Umgebung, können Sie keine Umgebungs-Snapshots speichern oder laden.

Umgebungs-Snapshot laden

Betrachten Sie die folgende Situation. Beispiel: catch-up ist aktiviert und Airflow führt einen DAG aus. nach einem Zeitplan zwischen dem Zeitpunkt der Erstellung des Snapshots und der Erstellung geladen. In diesem Fall hat Airflow nach dem Laden des Snapshots keine Informationen zur Ausführung des DAG. Daher führt Airflow den DAG für den und Daten.

Als weiteres Beispiel sehen Sie sich einen DAG an, der täglich ausgeführt wird. Sie erstellen einen Snapshot, Airflow führt diesen DAG aus und Sie laden den Snapshot am selben Tag hoch. In diesem Fall führt Airflow den DAG noch einmal aus, auch wenn der Nachholbedarf deaktiviert.

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 Ihres zu verbessern. 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 werden soll. Der Name des Ordners enthält die ID Ihres Projekts, den Speicherort der Umgebung und den Zeitstempel, zu 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 laden, werden diese benutzerdefinierten Pakete von Cloud Composer nicht installiert.

  7. Klicken Sie auf Laden und warten Sie, bis Cloud Composer den Snapshot geladen hat.

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

    Der Name des Ordners enthält die ID Ihres Projekts, den Ort 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) Das Argument --skip-pypi-packages-installation überspringt das Argument Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, werden diese benutzerdefinierten Pakete von Cloud Composer nicht 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 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 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 an, den URI eines Buckets, gefolgt vom Pfad zum Snapshot. Der Name des Ordners enthält die ID Ihres Projekts, den Speicherort der Umgebung und den Zeitstempel, zu 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: Im Anfragetext im Feld skipPypiPackagesInstallation geben Sie an, ob Cloud Composer die Installation benutzerdefinierter PyPI-Pakete aus dem Snapshot. Wenn Sie einen Snapshot einer Umgebung mit installierten benutzerdefinierten PyPI-Paketen laden, werden diese benutzerdefinierten Pakete von Cloud Composer nicht installiert.

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

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Ersetzen Sie:

  • SNAPSHOT_PATH durch den URI eines Bucket-Ordners, in dem Snapshot speichern.

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, mit Terraform Umgebungs-Snapshots 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 Definition einer Umgebung. Da Terraform nur die Konfiguration der Cloud Composer-Umgebung verwaltet, können Sie keine Umgebungs-Snapshots damit speichern oder daraus laden.

Nächste Schritte