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

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

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

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

スケジュールされたスナップショットを有効にすると、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 時、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 時、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 時、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 パラメータで、enabled フィールドの値を置き換える config.recoveryConfig.scheduledSnapshotsConfig.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
    }
  }
}

次のステップ