Salvare e caricare snapshot di ambiente

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Questa pagina spiega come salvare e caricare lo stato dell'ambiente utilizzando gli snapshot dell'ambiente.

Puoi configurare l'ambiente in modo da salvare automaticamente gli snapshot. Per ulteriori informazioni, consulta Configurare gli snapshot pianificati.

Informazioni sugli snapshot dell'ambiente

Gli snapshot dell'ambiente memorizzano lo stato dell'ambiente. Puoi salvare e caricare gli snapshot dell'ambiente on demand.

Puoi utilizzare gli snapshot per:

  • Ripristinare lo stato precedente dell'ambiente. Crea backup dell'ambiente utilizzando gli snapshot, quindi carica uno degli snapshot per ripristinare l'ambiente. Ad esempio, puoi eseguire il rollback di un'operazione di aggiornamento che installa i pacchetti PyPI o esegue l'override delle opzioni di configurazione di Airflow, anche dopo che l'ambiente è stato aggiornato correttamente.

  • Eseguire upgrade side-by-side e copiare gli ambienti. Crea uno snapshot di un ambiente esistente, crea un nuovo ambiente che utilizzi la stessa versione o una versione successiva di Managed Airflow, quindi applica lo snapshot a questo nuovo ambiente. Questa procedura è simile alla migrazione. Assicurati di mettere in pausa i DAG prima di creare lo snapshot per evitare esecuzioni di DAG duplicate.

  • Eseguire la migrazione degli ambienti a Managed Airflow (terza generazione).

Come vengono archiviati gli snapshot

Uno snapshot dell'ambiente è un insieme di file che descrivono lo stato dell'ambiente e archiviano il backup dei dati dell'ambiente.

Puoi creare più snapshot dell'ambiente. Gli snapshot dell'ambiente non sono incrementali. Puoi utilizzare qualsiasi snapshot indipendentemente dagli altri snapshot.

Managed Airflow non elimina gli snapshot quando elimini l'ambiente.

Per impostazione predefinita, Managed Airflow archivia gli snapshot nella cartella snapshots/ nel bucket dell'ambiente. Puoi anche specificare una località personalizzata quando crei uno snapshot.

Sebbene l'interfaccia utente di Cloud Storage mostri i dati come cartelle per comodità, i bucket funzionano in una struttura di file flat. Questo non cambia il modo in cui lavori con il salvataggio e il caricamento degli snapshot nella Google Cloud console, ma tieni presente questo aspetto quando esegui operazioni direttamente sui file nel bucket. Per ulteriori informazioni, consulta Spazio dei nomi degli oggetti.

Considerazioni sulla sicurezza per gli snapshot

Per mitigare questo rischio per la sicurezza, puoi archiviare le informazioni sensibili utilizzate dai DAG Airflow, come chiavi o password, in Secret Manager. Per ulteriori informazioni, consulta Configurare Secret Manager per l'ambiente.

Assicurati di controllare le autorizzazioni di sicurezza per il bucket dell'ambiente. Se archivi gli snapshot dell'ambiente in un bucket personalizzato, assicurati che le autorizzazioni di accesso siano configurate correttamente nel tuo progetto. Quando assegni le autorizzazioni, assicurati che il service account disponga di autorizzazioni sufficienti per salvare e caricare gli snapshot dal bucket.

Quali dati vengono salvati negli snapshot

Managed Airflow salva i seguenti dati negli snapshot:

  • Override della configurazione Airflow.
  • Variabili di ambiente.
  • Elenco dei pacchetti PyPI personalizzati, come requisiti.
  • Un backup del database Airflow, inclusi gli stati delle attività eseguite e la cronologia delle esecuzioni di DAG.
  • Un backup delle cartelle /dags, /data e /plugins dal bucket dell'ambiente.
  • La chiave fernet dell'ambiente.
  • Altre informazioni sulla configurazione dell'ambiente, come i parametri di scalabilità e prestazioni dell'ambiente. Managed Airflow non utilizza queste informazioni quando carica gli snapshot.

Quali dati vengono caricati dagli snapshot

Managed Airflow carica i seguenti dati dagli snapshot:

  • Override della configurazione Airflow.
  • Variabili di ambiente.
  • Pacchetti PyPI personalizzati (a meno che tu non scelga di saltare l'installazione).

  • I contenuti del database Airflow, inclusi gli stati delle attività eseguite e la cronologia delle esecuzioni di DAG.

  • I contenuti delle cartelle /dags, /data e /plugins dello snapshot vengono caricati nel bucket dell'ambiente.

  • La chiave fernet dello snapshot viene utilizzata per ricrittografare i dati dello snapshot con la chiave fernet dell'ambiente. La chiave fernet dell'ambiente rimane invariata.

Sebbene Managed Airflow memorizzi alcune informazioni sulla configurazione dell'ambiente negli snapshot, queste non vengono utilizzate durante il caricamento degli snapshot. I seguenti parametri dell'ambiente non cambiano quando carichi uno snapshot:

  • Configurazione dell'ambiente, come i parametri di scalabilità e prestazioni dell'ambiente.
  • Configurazione di rete dell'ambiente.
  • Contenuti del bucket dell'ambiente al di fuori delle cartelle /dags, /data e /plugins.
  • Etichette dell'ambiente.

Le impostazioni applicate nell'infrastruttura di Managed Airflow senza utilizzare l'API Composer potrebbero andare perse quando carichi uno snapshot.

Informazioni sulle operazioni completate parzialmente

Quando carichi uno snapshot, l'operazione può essere riuscita, non riuscita o completata parzialmente:

  • Le operazioni riuscite caricano tutti i dati dallo snapshot.
  • Le operazioni non riuscite non introducono modifiche.
  • Le operazioni completate parzialmente caricano un sottoinsieme di dati dallo snapshot. Queste operazioni vengono segnalate come non riuscite, ma il messaggio di errore indica quali dati sono stati caricati correttamente. Ad esempio, se i pacchetti PyPI vengono installati, ma gli override delle opzioni di configurazione di Airflow non sono riusciti, il messaggio di errore lo indica.

Per un'operazione completata parzialmente, puoi provare a caricare di nuovo lo stesso snapshot. Managed Airflow salta i passaggi che hanno avuto esito positivo nel tentativo precedente. Ad esempio, se un'operazione non è riuscita a causa di un timeout, ma il database è stato caricato correttamente, il tentativo successivo non carica di nuovo il database.

Prima di iniziare

  • Gli snapshot sono supportati in Managed Airflow (seconda generazione) versione 2.0.9 e successive. Managed Airflow (prima generazione legacy) supporta il salvataggio degli snapshot dell'ambiente nelle versioni 1.18.5 e successive.

  • Gli snapshot non creano un ambiente. Se vuoi caricare uno snapshot da un ambiente a un altro, devi prima creare un nuovo ambiente e poi caricarvi lo snapshot.

  • Non puoi caricare gli snapshot negli ambienti in stato di errore. Non è possibile correggere questi ambienti caricando uno snapshot. Puoi comunque caricare uno snapshot esistente in un nuovo ambiente.

  • Puoi caricare gli snapshot solo nella stessa versione o in una versione successiva di Managed Airflow o Airflow. Ad esempio, non puoi caricare uno snapshot da Managed Airflow 2.8.4 a un ambiente con Managed Airflow 2.8.3. Un altro esempio: non puoi caricare uno snapshot da Airflow 2.7.3 ad Airflow 2.6.3.

  • Gli snapshot non modificano la versione di Managed Airflow. Se esegui l'upgrade dell'ambiente a una versione successiva di Managed Airflow, quindi carichi uno snapshot da una versione precedente, l'ambiente mantiene la versione corrente di Managed Airflow. Ad esempio, il caricamento di uno snapshot da Managed Airflow 2.8.3 a Managed Airflow 2.8.4 non ripristina l'ambiente a Managed Airflow 2.8.3.

  • La dimensione massima del database Airflow che supporta gli snapshot è di 20 GB. Se il database dell'ambiente occupa più di 20 GB, riduci le dimensioni del database Airflow prima di salvare uno snapshot.

  • Per creare snapshot, il numero totale di oggetti nelle cartelle /dags,/plugins e /data nel bucket dell'ambiente deve essere inferiore a 100.000.

  • Se utilizzi il meccanismo XCom per trasferire i file, assicurati di utilizzarlo in conformità con le linee guida di Airflow. Il trasferimento di file di grandi dimensioni o di un numero elevato di file utilizzando XCom influisce sulle prestazioni del database Airflow e può causare errori durante il caricamento degli snapshot o l'upgrade dell'ambiente. Valuta la possibilità di utilizzare alternative come Cloud Storage per trasferire grandi volumi di dati.

  • La lunghezza massima del nome di un oggetto nel bucket dell'ambiente non deve superare i 1024 simboli. In caso contrario, non è possibile creare snapshot.

  • Se salvi gli snapshot in una località al di fuori del bucket dell'ambiente, il service account dell'ambiente deve disporre delle autorizzazioni di lettura e scrittura per la località specificata. Ad esempio, il ruolo Amministratore oggetti Storage dispone di queste autorizzazioni. Puoi applicarlo a un progetto o a un bucket specifico.

  • La creazione e l'archiviazione degli snapshot comportano costi aggiuntivi, correlati a Cloud Storage. Per ulteriori informazioni, vedi Prezzi.

Salvare uno snapshot dell'ambiente

Managed Airflow salva gli snapshot dell'ambiente in una sottocartella, relativa alla cartella che specifichi. Il nome della cartella contiene l'ID progetto, la località dell'ambiente, il nome dell'ambiente e il timestamp in cui è stato salvato lo snapshot. Ad esempio: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Console

Per creare uno snapshot dell'ambiente:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Fai clic su Salva snapshot.

  4. Nella finestra di dialogo Salva snapshot, seleziona dove archiviare lo snapshot:

    • Per archiviare lo snapshot nella cartella /snapshots nel bucket dell'ambiente, seleziona Usa la cartella degli snapshot nel bucket dell'ambiente (impostazione predefinita).

    • Per archiviare lo snapshot nella cartella personalizzata, seleziona Usa una cartella personalizzata in un altro bucket, quindi specifica una località.

  5. Fai clic su Salva.

gcloud

Il comando gcloud composer environments snapshots save salva uno snapshot dell'ambiente.

  • L'argomento snapshot-location specifica una cartella in cui viene salvato lo snapshot. Per impostazione predefinita, gli snapshot vengono salvati nella cartella /snapshots nel bucket dell'ambiente. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots. Puoi anche specificare qualsiasi altra cartella.

Per salvare uno snapshot dell'ambiente, esegui:

gcloud composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • (Facoltativo) SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui archiviare lo snapshot. Se ometti questo argomento, Airflow gestito salva lo snapshot nella cartella /snapshots nel bucket dell'ambiente.

L'esempio seguente utilizza la località predefinita:

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

L'esempio seguente salva in una cartella personalizzata:

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

API

  1. Crea una richiesta environments.saveSnapshot API.

  2. Nel corpo della richiesta, nel campo snapshotLocation, specifica la cartella in cui vuoi salvare lo snapshot.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Sostituisci:

  • SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui salvare lo snapshot.

Esempio:

// 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

Non è possibile salvare e caricare gli snapshot dell'ambiente da Terraform.

Il salvataggio e il caricamento degli snapshot sono azioni eseguite su un ambiente e gli snapshot risultanti non fanno parte della definizione di un ambiente. Poiché Terraform gestisce solo la configurazione dell'ambiente Airflow gestito, non puoi salvare o caricare gli snapshot dell'ambiente da Terraform.

Caricare uno snapshot dell'ambiente

Considera la seguente situazione. Ad esempio, il recupero è abilitato e Airflow esegue un DAG in base a una pianificazione tra il momento in cui è stato creato lo snapshot e il momento in cui è stato caricato. In questo caso, dopo aver caricato lo snapshot, Airflow non ha informazioni sull'esecuzione del DAG avvenuta, quindi Airflow esegue di nuovo il DAG per lo stesso periodo di tempo e gli stessi dati.

Un altro esempio: considera un DAG che viene eseguito in base a una pianificazione giornaliera. Crei uno snapshot, quindi Airflow esegue questo DAG e, successivamente, carichi lo snapshot nello stesso giorno. In questo caso, Airflow esegue di nuovo il DAG, anche se il recupero è disabilitato.

Console

Per caricare uno snapshot nell'ambiente:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Fai clic su Carica snapshot.

  4. Nella finestra di dialogo Carica snapshot, fai clic su Sfoglia.

  5. Seleziona una cartella che contiene lo snapshot. Il nome della cartella elenca l'ID del progetto, la località dell'ambiente e il timestamp in cui è stato salvato lo snapshot. Ad esempio, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  6. (Facoltativo) Per saltare l'installazione dei pacchetti PyPI personalizzati dallo snapshot, seleziona Ignora installazione dei pacchetti PyPI. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati , Managed Airflow non installa questi pacchetti personalizzati.

  7. Fai clic su Carica e attendi che Managed Airflow carichi lo snapshot.

gcloud

Il comando gcloud composer environments snapshots load carica uno snapshot nell'ambiente.

  • L'argomento --snapshot-path specifica una cartella in cui si trova lo snapshot.

    Il nome della cartella elenca l'ID del progetto, la località dell'ambiente e il timestamp in cui è stato salvato lo snapshot. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  • (Facoltativo) L'argomento --skip-pypi-packages-installation salta l'installazione dei pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati , Managed Airflow non installa questi pacchetti personalizzati.

gcloud composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Sostituisci:

  • DESTINATION_ENVIRONMENT_NAME con il nome dell'ambiente in cui vuoi caricare lo snapshot.
  • LOCATION con la regione in cui si trova l'ambiente.
  • SNAPSHOT_PATH con l'URI di un bucket, seguito dal percorso dello snapshot.

Esempio:

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. Crea una richiesta environments.loadSnapshot API.

  2. Nel corpo della richiesta, nel campo snapshotPath, specifica l'URI di un bucket, seguito dal percorso dello snapshot. Il nome della cartella elenca l'ID del progetto, la località dell'ambiente e il timestamp in cui è stato salvato lo snapshot. Ad esempio, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  3. (Facoltativo) Nel corpo della richiesta, nel campo skipPypiPackagesInstallation, specifica se Managed Airflow deve saltare l'installazione dei pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati , Managed Airflow non installa questi pacchetti personalizzati.

    Questo campo è facoltativo. Se ometti questo campo, Managed Airflow installa i pacchetti PyPI dallo snapshot.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Sostituisci:

  • SNAPSHOT_PATH con l'URI di una cartella del bucket in cui archiviare lo snapshot.

Esempio:

// 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

Non è possibile salvare e caricare gli snapshot dell'ambiente utilizzando Terraform.

Il salvataggio e il caricamento degli snapshot sono azioni eseguite su un ambiente e gli snapshot risultanti non fanno parte della definizione di un ambiente. Poiché Terraform gestisce solo la configurazione dell'ambiente Airflow gestito, non puoi salvare o caricare gli snapshot dell'ambiente da Terraform.

Passaggi successivi