Configurare gli snapshot pianificati

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

Questa pagina spiega come configurare l'ambiente per salvare gli snapshot in base a una pianificazione.

Per saperne di più su come funzionano gli snapshot dell'ambiente e su come salvare gli snapshot manualmente, consulta Salvare e caricare gli snapshot.

Come funzionano gli snapshot pianificati

Quando abiliti gli snapshot pianificati, Airflow gestito salva periodicamente gli snapshot dell'ambiente in un bucket Cloud Storage.

Se crei gli snapshot manualmente, Airflow gestito li salva per impostazione predefinita nel bucket dell'ambiente. Per gli snapshot pianificati, ti consigliamo di salvarli in un bucket separato. In questo modo, puoi configurare le autorizzazioni e una configurazione del ciclo di vita per questo bucket. Un bucket può contenere snapshot di più ambienti e puoi anche creare bucket che sono ridondanti tra le regioni.

Prima di iniziare

Creare un bucket per gli snapshot pianificati

Crea un bucket per gli snapshot pianificati. Considera come vuoi utilizzare gli snapshot dell'ambiente. Se fanno parte del tuo piano di ripristino di emergenza, utilizza un bucket ridondante tra le regioni o un bucket in una regione diversa, in modo da avere accesso ai dati anche in caso di interruzione completa della regione. In caso contrario, un bucket nella stessa regione dell'ambiente potrebbe essere più adatto e, in questo caso, riduci i costi di trasferimento dei dati tra le regioni.

Configurare le autorizzazioni per il bucket

Configura le seguenti autorizzazioni:

  • L'account di servizio dell'ambiente deve disporre delle autorizzazioni di lettura e scrittura per questo bucket. Ad esempio, il ruolo Amministratore oggetti Storage dispone di queste autorizzazioni.

  • Gli account utente non richiedono autorizzazioni aggiuntive per il bucket per caricare gli snapshot, a meno che tu non voglia visualizzare i contenuti del bucket da Google Cloud consola. In questo caso, un account utente deve disporre dell'autorizzazione di lettura sul bucket.

Impostare una configurazione del ciclo di vita per il bucket

Per risparmiare sui costi di archiviazione, puoi configurare una regola che elimina gli snapshot dell'ambiente dopo un determinato periodo di tempo.

Ad esempio, per eliminare automaticamente gli snapshot precedenti a 30 giorni:

  1. Imposta una configurazione del ciclo di vita per il bucket.
  2. Specifica l'azione Elimina oggetto.
  3. Seleziona Età e 30 giorni come condizione.

Abilitare una pianificazione degli snapshot per l'ambiente

Console

  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. Vai alla scheda Configurazione ambiente.

  4. In Configurazione ripristino > Pianificazione snapshot, fai clic su Modifica. Viene visualizzato il riquadro Pianificazione snapshot.

  5. Nel riquadro Pianificazione snapshot , seleziona Crea snapshot periodicamente in base alla pianificazione specificata.

  6. Nell'elenco a discesa Frequenza pianificazione , seleziona il periodo giornaliero, settimanale o personalizzato per gli snapshot.

    Puoi specificare una pianificazione personalizzata con il formato unix-cron. Ad esempio, per salvare gli snapshot ogni 30 minuti, specifica */30 * * * *.

  7. Nel campo Località snapshot, seleziona la cartella del bucket in cui vuoi salvare gli snapshot.

gcloud

Aggiorna la configurazione dell'ambiente. I seguenti argomenti definiscono i parametri per gli snapshot pianificati:

  • --enable-scheduled-snapshot-creation abilita gli snapshot pianificati.
  • --snapshot-location specifica una cartella del bucket in cui vuoi salvare gli snapshot.
  • --snapshot-creation-schedule specifica la frequenza con cui devono essere creati gli snapshot dell'ambiente, nel formato unix-cron. Ad esempio, per creare uno snapshot ogni 30 minuti, specifica */30 * * * *.

  • --snapshot-schedule-timezone definisce un fuso orario per la pianificazione. Questo valore è un offset temporale e non tiene conto delle modifiche dell'ora legale. I valori validi vanno da UTC-12 a UTC+12. Esempi: UTC, UTC-01, UTC+03.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-scheduled-snapshot-creation \
    --snapshot-location "gs://SNAPSHOTS_FOLDER" \
    --snapshot-creation-schedule "CRON_EXPRESSION" \
    --snapshot-schedule-timezone "TIME_ZONE"

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui salvare lo snapshot.
  • CRON_EXPRESSION con la pianificazione, nel formato unix-cron.
  • TIME_ZONE con un fuso orario per la pianificazione.

Esempio (tutti i giorni alle 4:00, UTC+01):

gcloud composer environments update example-environment \
    --location us-central1 \
    --enable-scheduled-snapshot-creation \
    --snapshot-location "gs://example-bucket/environment_snapshots" \
    --snapshot-creation-schedule "0 4 * * *" \
    --snapshot-schedule-timezone "UTC+01"

API

Crea una richiesta API environments.patch.

In questa richiesta:

  1. Nel parametro updateMask, specifica la maschera config.recoveryConfig.scheduledSnapshotsConfig per sostituire la configurazione degli snapshot pianificati esistente.

  2. Nel corpo della richiesta, specifica la configurazione per gli snapshot:

    {
      "config": {
        "recoveryConfig": {
          "scheduledSnapshotsConfig": {
            "enabled": true,
            "snapshot_location": "gs://SNAPSHOTS_FOLDER",
            "snapshot_creation_schedule": "CRON_EXPRESSION",
            "time_zone": "TIME_ZONE"
          }
        }
      }
    }
    

    Sostituisci:

    • SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui salvare lo snapshot.
    • CRON_EXPRESSION con la pianificazione, nel formato unix-cron.

    • TIME_ZONE con un fuso orario per la pianificazione. Questo valore è un offset temporale e non tiene conto delle modifiche dell'ora legale. I valori validi vanno da UTC-12 a UTC+12. Esempi: UTC, UTC-01, UTC+03.

    Esempio (tutti i giorni alle 4:00, UTC+01):

      // PATCH https://composer.googleapis.com/v1/projects/example-project/
      // locations/us-central1/environments/example-environment?updateMask=
      // config.recoveryConfig.scheduledSnapshotsConfig
        {
          "config": {
            "recoveryConfig": {
              "scheduledSnapshotsConfig": {
                "enabled": true,
                "snapshot_location": "gs://example-bucket/environment_snapshots",
                "snapshot_creation_schedule": "0 4 * * *",
                "time_zone": "UTC+01"
              }
            }
          }
        }
    

Terraform

Il blocco scheduled_snapshots_config in recovery_config definisce i parametri per gli snapshot pianificati:

  • enabled abilita gli snapshot pianificati.
  • snapshot_location specifica una cartella del bucket in cui vuoi salvare gli snapshot.
  • snapshot_creation_schedule specifica la frequenza con cui devono essere creati gli snapshot dell'ambiente, nel formato unix-cron. Ad esempio, per creare uno snapshot ogni 30 minuti, specifica */30 * * * *.
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  recovery_config {
    scheduled_snapshots_config {
      enabled = true
      snapshot_location = "gs://SNAPSHOTS_FOLDER"
      snapshot_creation_schedule = "CRON_EXPRESSION"
      time_zone = "TIME_ZONE"
    }
  }
}

Sostituisci:

  • SNAPSHOTS_FOLDER con l'URI di una cartella del bucket in cui salvare lo snapshot.
  • CRON_EXPRESSION con la pianificazione, nel formato unix-cron.

  • TIME_ZONE con un fuso orario per la pianificazione. Questo valore è un offset temporale e non tiene conto delle modifiche dell'ora legale. I valori validi vanno da UTC-12 a UTC+12. Esempi: UTC, UTC-01, UTC+03.

Esempio (tutti i giorni alle 4:00, UTC+01):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  recovery_config {
    scheduled_snapshots_config {
      enabled = true
      snapshot_location = "gs://example-bucket/environment_snapshots"
      snapshot_creation_schedule = "0 4 * * *"
      time_zone = "UTC+01"
    }
  }
}

Disabilitare gli snapshot pianificati

Se disabiliti gli snapshot pianificati, tutti gli snapshot esistenti che sono già stati creati non vengono modificati o rimossi. Questi snapshot rimangono nella località in cui sono stati salvati.

Console

  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. Vai alla scheda Configurazione ambiente.

  4. In Configurazione ripristino > Pianificazione snapshot, fai clic su Modifica. Viene visualizzato il riquadro Pianificazione snapshot.

  5. Nel riquadro Pianificazione snapshot, seleziona Non creare snapshot automaticamente.

gcloud

Aggiorna la configurazione dell'ambiente. L'argomento --disable-scheduled-snapshot-creation disabilita gli snapshot pianificati.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-scheduled-snapshot-creation

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

Esempio:

gcloud composer environments update example-environment \
    --location us-central1 \
    --disable-scheduled-snapshot-creation

API

Crea una richiesta API environments.patch.

In questa richiesta:

  1. Nel parametro updateMask, specifica la config.recoveryConfig.scheduledSnapshotsConfig.enabled maschera per sostituire il valore del campo enabled.

  2. Nel corpo della richiesta, specifica il nuovo valore:

    {
      "config": {
        "recoveryConfig": {
          "scheduledSnapshotsConfig": {
            "enabled": false
          }
        }
      }
    }
    

Esempio:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig.enabled
{
"config": {
  "recoveryConfig": {
    "scheduledSnapshotsConfig": {
      "enabled": false
    }
  }
}
}

Terraform

Per disabilitare gli snapshot pianificati, imposta il campo enabled nel blocco scheduled_snapshots_config su false:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  recovery_config {
    scheduled_snapshots_config {
      enabled = false
    }
  }
}

Esempio:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  recovery_config {
    scheduled_snapshots_config {
      enabled = false
      // Other scheduled snapshots parameters
    }
  }
}

Passaggi successivi