スケジュールされたスナップショットを構成する

Cloud Composer 1 | Cloud Composer 2

このページでは、スケジュールに従ってスナップショットを保存するように環境を構成する方法について説明します。

環境スナップショットの仕組みとスナップショットを手動で保存する方法について詳しくは、スナップショットの保存と読み込みをご覧ください。

スケジュールされたスナップショットの仕組み

スケジュール設定されたスナップショットを有効にすると、Cloud Composer によって環境のスナップショットが Cloud Storage バケットに定期的に保存されます。

スナップショットを手動で作成すると、Cloud Composer は、デフォルトでは環境のバケットにスナップショットを保存します。スケジュール設定されたスナップショットについては、別のバケットにスナップショットを保存することをおすすめします。このような方法で、このバケットの権限とライフサイクルを設定できます。1 つのバケットは、複数の環境からのスナップショットを保持できます。リージョン間で冗長なバケットを作成することもできます。

準備

  • Cloud Composer では、2.0.32 以降のバージョンでスケジュール設定されたスナップショットをサポートしています。環境のスナップショットは、2.0.9 以降のバージョンでサポートされています。

  • スナップショットの要件と制限の詳細については、スナップショットの保存と読み込みをご覧ください。

スケジュールされたスナップショットのバケットを作成する

スケジュールされたスナップショットのバケットを作成する環境のスナップショットの使用方法を検討してください。災害復旧計画の一部である場合は、リージョン間で冗長なバケットまたは別のリージョンのバケットを使用します。これにより、リージョンが完全に停止してもデータにアクセスできます。それ以外の場合は、環境と同じリージョンのバケットのほうが適している可能性があります。また、この場合はリージョン間でのデータ転送のコストが削減されます。

バケットの権限を構成する

次の権限を構成します。

  • 環境のサービス アカウントに、このバケットの読み取りと書き込みの権限が必要です。たとえば、ストレージ オブジェクト管理者のロールにはそのような権限があります。

  • Google Cloud コンソールからバケットのコンテンツを表示する場合を除き、ユーザー アカウントにバケットからスナップショットを読み込むための追加の権限は必要ありません。この場合、ユーザー アカウントにはバケットに対する読み取り権限が必要です。

バケットのライフサイクル構成を設定する

ストレージ費用を節約するために、一定の期間が経過した後に環境のスナップショットを削除するルールを構成できます。

たとえば、30 日を超える期間が経過したスナップショットを自動的に削除するには、次のコマンドを実行します。

  1. バケットのライフサイクル構成を設定します。
  2. [オブジェクトを削除する] アクションを指定します。
  3. [期間] と [30 日] を条件として選択します。

環境のスナップショット スケジュールを有効にする

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [リカバリ構成] > [スナップショット スケジュール] で、[編集] をクリックします。[スナップショット スケジュール] ペインが開きます。

  5. [スナップショット スケジュール] ペインで、[指定したスケジュールに沿って、スナップショットを定期的に作成する] を選択します。

  6. [スケジュール頻度] プルダウン リストで、スナップショットの日、週、またはカスタム期間を選択します。

    unix-cron 形式でカスタム スケジュールを指定できます。たとえば、30 分ごとにスナップショットを保存するには */30 * * * * を指定します。

  7. [スナップショットのロケーション] フィールドで、スナップショットを保存するバケット フォルダを選択します。

gcloud

環境の構成を更新します。スケジュール設定されたスナップショットのパラメータを定義する引数は次のとおりです。

  • --enable-scheduled-snapshot-creation は、スケジュール設定されたスナップショットを有効にします。
  • --snapshot-location は、スナップショットを保存するバケット フォルダを指定します。
  • --snapshot-creation-schedule では、環境のスナップショットを取得する頻度を unix-cron 形式で指定します。たとえば、30 分ごとにスナップショットを作成するには、*/30 * * * * を指定します。

  • --snapshot-schedule-timezone は、スケジュールのタイムゾーンを定義します。この値は時間オフセットであり、夏時間の変更は考慮されません。有効な値は UTC-12UTC+12 です。例: UTC, UTC-01, UTC+03

gcloud beta 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"

次のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。
  • SNAPSHOTS_FOLDER は、スナップショットを保存するバケット フォルダの URI に置き換えます。
  • CRON_EXPRESSION は、unix-cron 形式のスケジュールに置き換えます。
  • TIME_ZONE は、スケジュールのタイムゾーンに置き換えます。

例(毎日 4:00、UTC+01):

gcloud beta 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

environments.patch API リクエストを作成します。

このリクエストで次のように操作します。

  1. updateMask パラメータで、既存のスケジュール設定されたスナップショット構成を置き換える config.recoveryConfig.scheduledSnapshotsConfig マスクを指定します。

  2. リクエストの本文で、スナップショットの構成を指定します。

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

    次のように置き換えます。

    • SNAPSHOTS_FOLDER は、スナップショットを保存するバケット フォルダの URI に置き換えます。
    • CRON_EXPRESSION は、unix-cron 形式のスケジュールに置き換えます。

    • TIME_ZONE は、スケジュールのタイムゾーンに置き換えます。この値は時間オフセットであり、夏時間の変更は考慮されません。有効な値は UTC-12UTC+12 です。例: UTCUTC-01UTC+03

    例(毎日 4:00、UTC+01):

      // PATCH https://composer.googleapis.com/v1beta1/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

recovery_config ブロックの scheduled_snapshots_config は、スケジュール設定されたスナップショットのパラメータを定義します。

  • enabled は、スケジュール設定されたスナップショットを有効にします。
  • snapshot_location は、スナップショットを保存するバケット フォルダを指定します。
  • snapshot_creation_schedule では、環境のスナップショットを取得する頻度を unix-cron 形式で指定します。たとえば、30 分ごとにスナップショットを作成するには、*/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"
    }
  }
}

以下のように置き換えます。

  • SNAPSHOTS_FOLDER は、スナップショットを保存するバケット フォルダの URI に置き換えます。
  • CRON_EXPRESSION は、unix-cron 形式のスケジュールに置き換えます。

  • TIME_ZONE は、スケジュールのタイムゾーンに置き換えます。この値は時間オフセットであり、夏時間の変更は考慮されません。有効な値は UTC-12UTC+12 です。例: UTCUTC-01UTC+03

例(毎日 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"
    }
  }
}

スケジュール設定されたスナップショットを無効にする

スケジュール設定されたスナップショットを無効にしても、すでに取得されている既存のすべてのスナップショットが変更されたり、削除されたりすることはありません。これらのスナップショットは、保存された場所に残ります。

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [リカバリ構成] > [スナップショット スケジュール] で、[編集] をクリックします。[スナップショット スケジュール] ペインが開きます。

  5. [スナップショット スケジュール] ペインで [スナップショットを自動的に作成しない] を選択します。

gcloud

環境の構成を更新します。--disable-scheduled-snapshot-creation 引数により、スケジュール設定されたスナップショットが無効になります。

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

次のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。

例:

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

API

environments.patch API リクエストを作成します。

このリクエストで次のように操作します。

  1. updateMask パラメータで、config.recoveryConfig.scheduledSnapshotsConfig.enabled マスクを指定して enabled フィールドの値を置き換えます。

  2. リクエストの本文に新しい値を指定します。

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

例:

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

Terraform

スケジュール設定されたスナップショットを無効にするには、scheduled_snapshots_config ブロックの enabled フィールドを false に設定します。

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

  recovery_config {
    scheduled_snapshots_config {
      enabled = false
    }
  }
}

例:

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

次のステップ