Salva e carica gli snapshot di ambiente

Cloud Composer 1 | Cloud Composer 2

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

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

Informazioni sugli snapshot di ambiente

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

Puoi utilizzare gli snapshot per:

  • Ripristina l'ambiente a uno stato precedente. Crea backup del tuo 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 pacchetti PyPI o esegue l'override delle opzioni di configurazione di Airflow, anche dopo che l'ambiente è stato aggiornato.

  • Esegui upgrade affiancati e copia gli ambienti. Crea lo snapshot di un ambiente esistente, crea un nuovo ambiente che utilizzi la stessa versione di Cloud Composer o una versione successiva, 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.

Modalità di archiviazione degli snapshot

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

Puoi creare più snapshot del tuo ambiente. Gli snapshot di ambiente non sono incrementali. Puoi utilizzare qualsiasi snapshot indipendentemente da altri.

Cloud Composer non elimina gli snapshot quando elimini l'ambiente.

Per impostazione predefinita, Cloud Composer archivia gli snapshot nella cartella snapshots/ del bucket del tuo ambiente. Puoi anche specificare una località personalizzata quando crei uno snapshot.

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

Considerazioni sulla sicurezza per gli snapshot

Per ridurre questo rischio per la sicurezza, puoi archiviare in Secret Manager le informazioni sensibili utilizzate dai DAG di Airflow, come chiavi o password. Per maggiori informazioni, consulta Configurare Secret Manager per il tuo ambiente.

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

Quali dati vengono salvati negli snapshot

Cloud Composer salva i seguenti dati negli snapshot:

  • Override della configurazione Airflow.
  • Variabili di ambiente.
  • Elenco di 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, ad esempio scala e parametri di prestazioni dell'ambiente. Cloud Composer non utilizza queste informazioni durante il caricamento degli snapshot.

Quali dati vengono caricati dagli snapshot

Cloud Composer 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 criptare nuovamente i dati dello snapshot con la chiave Fernet dell'ambiente. La chiave Fernet dell'ambiente rimane invariata.

Sebbene Cloud Composer memorizzi alcune informazioni sulla configurazione dell'ambiente negli snapshot, non viene utilizzata durante il caricamento degli snapshot. I seguenti parametri dell'ambiente non cambiano quando carichi uno snapshot:

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

Tutte le impostazioni applicate nell'infrastruttura Cloud Composer senza utilizzare l'API Cloud Composer potrebbero andare perse quando carichi uno snapshot.

Informazioni sulle operazioni parzialmente completate

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

  • Le operazioni riuscite caricano tutti i dati dallo snapshot.
  • Le operazioni non riuscite non introducono alcuna modifica.
  • Le operazioni parzialmente completate 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 sono installati, ma gli override delle opzioni di configurazione di Airflow non sono riusciti, il messaggio di errore lo indica.

Per un'operazione parzialmente completata, puoi provare a caricare di nuovo lo stesso snapshot. Cloud Composer ignora i passaggi andati a buon fine nel tentativo precedente. Ad esempio, se un'operazione non è riuscita in seguito a un timeout, ma il database è stato caricato correttamente, al tentativo successivo non verrà caricato di nuovo il database.

Prima di iniziare

  • Gli snapshot sono supportati in Cloud Composer 2 versione 2.0.9 e successive. Cloud Composer 1 supporta il salvataggio degli snapshot di ambiente per versioni successive alla 1.18.5.

  • Gli snapshot non creano un ambiente. Per caricare uno snapshot da un ambiente a un ambiente diverso, devi prima creare un nuovo ambiente in cui caricare lo snapshot.

  • Non puoi caricare gli snapshot in ambienti che si trovano 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 Cloud Composer o Airflow. Ad esempio, non puoi caricare uno snapshot da Cloud Composer 2.0.2 in un ambiente con Cloud Composer 2.0.1. Come altro esempio, non puoi caricare uno snapshot da Airflow 2.2.3 a Airflow 2.1.4.

  • Gli snapshot non modificano la versione di Cloud Composer. Se esegui l'upgrade del tuo ambiente a una versione più recente di Cloud Composer e, successivamente, carichi uno snapshot da una versione precedente, l'ambiente manterrà comunque la versione attuale di Cloud Composer. Ad esempio, il caricamento di uno snapshot da Cloud Composer 2.0.1 a Cloud Composer 2.0.2 non ripristina l'ambiente a Cloud Composer 2.0.1.

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

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

  • Se salvi gli snapshot in una posizione esterna al bucket del tuo ambiente, l'account di servizio del tuo 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 applicarla a un progetto o a un bucket specifico.

  • La creazione e l'archiviazione di snapshot comporta costi aggiuntivi correlati a Cloud Storage. Per ulteriori informazioni, consulta la sezione Prezzi.

Salva uno snapshot di ambiente

Cloud Composer salva gli snapshot di ambiente in una sottocartella, relativa alla cartella da te specificata. Il nome della cartella contiene l'ID progetto, la posizione 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 del tuo ambiente:

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

    Vai a Ambienti

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

  3. Fai clic su Salva istantanea.

  4. Nella finestra di dialogo Salva istantanea, seleziona dove archiviare l'istantanea:

    • Per archiviare lo snapshot nella cartella /snapshots del bucket di ambiente, seleziona Utilizza cartella snapshot nel bucket di ambiente (impostazione predefinita).

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

  5. Fai clic su Salva.

gcloud

Il comando gcloud beta composer environments snapshots save salva uno snapshot del tuo ambiente.

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

Per salvare uno snapshot del tuo ambiente, esegui:

gcloud beta 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, Cloud Composer salva lo snapshot nella cartella /snapshots del bucket del tuo ambiente.

Nell'esempio seguente viene utilizzata la località predefinita:

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

L'esempio seguente viene salvato in una cartella personalizzata:

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

API

  1. Creare una richiesta API environments.saveSnapshot.

  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/v1beta1/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 di ambiente da Terraform.

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

Carica uno snapshot di ambiente

Considera la seguente situazione. Ad esempio, il catch-up è abilitato e Airflow esegue un DAG in 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 di DAG che si è verificata, perciò Airflow esegue di nuovo il DAG per lo stesso periodo di tempo e gli stessi dati.

Come ulteriore esempio, considera un DAG eseguito in base a una pianificazione giornaliera. Devi creare uno snapshot, quindi Airflow esegue questo DAG e, in seguito, 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 nel tuo ambiente Cloud Composer 2:

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

    Vai a 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 in cui è archiviato lo snapshot. Il nome della cartella elenca l'ID del progetto, la posizione dell'ambiente e il timestamp al momento del salvataggio dello snapshot. Ad esempio, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

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

  7. Fai clic su Carica e attendi che Cloud Composer carichi lo snapshot.

gcloud

Il comando gcloud beta composer environments snapshots load carica uno snapshot nel tuo ambiente.

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

    Il nome della cartella elenca l'ID del progetto, la posizione dell'ambiente e il timestamp al momento del salvataggio dello 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 ignora l'installazione di pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati, Cloud Composer non installa questi pacchetti personalizzati.

gcloud beta 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 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. Creare una richiesta API environments.loadSnapshot.

  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 posizione dell'ambiente e il timestamp al momento del salvataggio dello 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 Cloud Composer deve saltare l'installazione di pacchetti PyPI personalizzati dallo snapshot. Se carichi uno snapshot di un ambiente con pacchetti PyPI personalizzati installati, Cloud Composer non installa questi pacchetti personalizzati.

    Questo campo è facoltativo. Se ometti questo campo, Cloud Composer installa 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/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

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

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

Passaggi successivi