Cloud Composer 1 | Cloud Composer 2
このページでは、環境スナップショットを使用して環境の状態の保存と、読み込みの方法について説明します。
スナップショットを自動的に保存するように環境を構成できます。詳細については、スケジュール設定されたスナップショットを構成するをご覧ください。
環境のスナップショットについて
環境のスナップショットには、環境の状態が保存されます。環境のスナップショットは、オンデマンドでの保存と読み込みができます。
スナップショットを使用すると、次のことを行うことができます。
- Composer または Airflow の新しいメジャー バージョンに環境を移行します。
スナップショットの保存方法
環境のスナップショットは、環境の状態を記述し、環境データのバックアップを保存する一連のファイルです。
環境のスナップショットを複数作成できます。環境のスナップショットは非増分です。任意のスナップショットを、他のスナップショットとは別に使用できます。
環境を削除しても、Cloud Composer ではスナップショットは削除されません。
デフォルトでは、Cloud Composer により環境のバケット内の snapshots/
フォルダにスナップショットが保存されます。スナップショットを作成するときに、独自の場所を指定することもできます。
Cloud Storage UI では便宜上、フォルダとしてデータが表示されますが、バケットはフラット ファイル構造で機能します。これは、Google Cloud コンソールでのスナップショットの保存と読み込みの方法を変更するものではありませんが、バケット内のファイルに対してオペレーションを直接実行する際には注意が必要です。詳細については、オブジェクトの名前空間をご覧ください。
スナップショットのセキュリティ上の考慮事項
このセキュリティ リスクを軽減するために、Airflow DAG で使用される機密情報(キーやパスワードなど)を Secret Manager に格納できます。詳細については、環境に Secret Manager を構成するをご覧ください。
環境のバケットに対するセキュリティ権限を確認してください。環境のスナップショットをカスタム バケットに保存する場合は、そのバケットに対するアクセス権限がプロジェクト内で正しく構成されていることを確認してください。権限を割り当てるときは、環境のサービス アカウントに、バケットからスナップショットの保存と読み込みを行うための十分な権限があることを確認してください。
スナップショットに保存されるデータ
Cloud Composer では、次のデータをスナップショットに保存します。
- Airflow 構成のオーバーライド。
- 環境変数。
- 要件に応じたカスタム PyPI パッケージのリスト。
- 実行されたタスクの状態や DAG の実行履歴など、Airflow データベースのバックアップ。
- 環境のバケットの
/dags
、/data
、/plugins
フォルダのバックアップ。 - 環境の Fernet 鍵。
- 環境のスケールやパフォーマンス パラメータなど、環境の構成に関するその他の情報。Cloud Composer は、スナップショットの読み込み時にこの情報を使用しません。
スナップショットから読み込まれるデータ
Cloud Composer では、スナップショットから次のデータが読み込まれます。
- Airflow 構成のオーバーライド。
- 環境変数。
カスタムの PyPI パッケージ(インストールのスキップを選択した場合を除く)。
実行されたタスクの状態や DAG の実行履歴などを含む Airflow データベースのコンテンツ。
スナップショットの
/dags
、/data
、/plugins
フォルダの内容が環境のバケットに読み込まれます。スナップショットの Fernet 鍵は、スナップショットのデータを環境独自の Fernet 鍵で再暗号化するために使用されます。環境の Fernet 鍵は変更されません。
Cloud Composer は、環境の構成に関する情報をスナップショットに保存しますが、スナップショットの読み込み時にその情報は使用されません。スナップショットを読み込んでも、次の環境のパラメータは変更されません。
- 環境の構成(環境のスケールとパフォーマンスのパラメータなど)。
- 環境のネットワーク構成。
/dags
、/data
、/plugins
フォルダ外部の環境のバケットの内容。- 環境ラベル。
スナップショットを読み込む際に、Cloud Composer API を使用せずに Cloud Composer インフラストラクチャで適用した設定が失われる可能性があります。
部分的に完了したオペレーションについて
スナップショットを読み込む際に、オペレーションは成功、失敗、または部分的に完了する可能性があります。
- 正常なオペレーションでは、スナップショットからすべてのデータが読み込まれます。
- 失敗したオペレーションでは変更は導入されません。
- 部分的に完了したオペレーションでは、スナップショットからデータのサブセットを読み込みます。このようなオペレーションは失敗として報告されますが、エラー メッセージでは正常に読み込まれたデータを示しています。たとえば、PyPI パッケージがインストールされているものの、Airflow 構成オプションのオーバーライドが正常に完了しなかった場合、エラー メッセージではこの内容が示されています。
部分的に完了したオペレーションについては、同じスナップショットの再度の読み込みを試すことができます。Cloud Composer により、前回の試行で成功したステップがスキップされます。たとえば、タイムアウトでオペレーションが失敗したものの、データベースは正常に読み込まれた場合、次回の試行では、データベースが再度読み込まれることはありません。
始める前に
- Cloud Composer 1 では、スナップショットの保存のみが可能で、読み込みはできません。スナップショットは、Cloud Composer 1 環境から Cloud Composer 2 環境に読み込むことができます。
スナップショットは、Cloud Composer 2 バージョン 2.0.9 以降でサポートされています。Cloud Composer 1 では、バージョン 1.18.5 以降の環境スナップショットの保存がサポートされています。
スナップショットは環境を作成しません。スナップショットを環境から別の環境に読み込む場合は、まず新しい環境を作成してから、スナップショットを読み込む必要があります。
エラー状態の環境にはスナップショットを読み込めません。スナップショットを読み込んでも、このような環境の修正はできません。既存のスナップショットを新しい環境に読み込むこともできます。
スナップショットの読み込みができるのは、Cloud Composer または Airflow と同じバージョンかそれ以降のバージョンのみです。たとえば、Cloud Composer 2.0.2 から Cloud Composer 2.0.1 の環境にスナップショットを読み込むことはできません。別の例として、Airflow 2.2.3 から Airflow 2.1.4 へスナップショットを読み込むことはできません。
スナップショットは Cloud Composer のバージョンを変更しません。環境を新しいバージョンの Cloud Composer にアップグレードして、以前のバージョンからスナップショットを読み込んだ場合でも、環境では現在のバージョンの Cloud Composer がそのまま維持されます。たとえば、Cloud Composer 2.0.1 から Cloud Composer 2.0.2 にスナップショットを読み込んでも、環境は Cloud Composer 2.0.1 には戻りません。
スナップショットをサポートする Airflow データベースの最大サイズは 20 GB です。環境のデータベースが 20 GB を超える場合は、スナップショットを保存する前に Airflow データベースのサイズを小さくしてください。
環境のバケット内のオブジェクト名の長さは、1,024 文字以下にする必要があります。そうでない場合は、スナップショットを作成できません。
環境のバケット外の場所にスナップショットを保存する場合は、環境のサービス アカウントに、指定した場所に対する読み取りおよび書き込み権限が付与されている必要があります。たとえば、ストレージ オブジェクト管理者のロールにはそのような権限があります。プロジェクトまたは特定のバケットにそのロールを適用できます。
スナップショットを作成して保存すると、Cloud Storage に関連する追加費用が発生します。詳細は、料金をご覧ください。
環境のスナップショットを保存する
Cloud Composer は、指定したフォルダを基準としたサブフォルダに環境のスナップショットを保存します。フォルダ名には、プロジェクト ID、環境の場所、環境の名前、スナップショットが保存された時点のタイムスタンプが含まれます。例: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
。
Console
環境のスナップショットを作成するには:
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[スナップショットを保存] をクリックします。
[スナップショットを保存] ダイアログで、スナップショットを保存する場所を選択します。
スナップショットを環境のバケット内の
/snapshots
フォルダに保存するには、[環境バケットでスナップショット フォルダを使用する(デフォルト)] を選択します。スナップショットをカスタム フォルダに保存するには、[別のバケットでカスタム フォルダを使用する] を選択してから、場所を指定します。
[保存] をクリックします。
gcloud
gcloud beta composer environments snapshots save
コマンドは、環境のスナップショットを保存します。
snapshot-location
引数で、スナップショットが保存されるフォルダを指定します。デフォルトでは、スナップショットは環境のバケットの/snapshots
フォルダに保存されます。例:gs://us-central1-example-916807e1-bucket/snapshots
他のフォルダを指定することもできます。
環境のスナップショットを保存するには、次のコマンドを実行します。
gcloud beta composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
次のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。- (省略可)
SNAPSHOTS_FOLDER
は、スナップショットを保存するバケット フォルダの URI に置き換えます。この引数を省略すると、Cloud Composer では、スナップショットが環境のバケット内の/snapshots
フォルダに保存されます。
次の例では、デフォルトの場所を使用します。
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1
次の例では、カスタム フォルダに保存します。
gcloud beta composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
environments.saveSnapshot
API リクエストを作成します。リクエスト本文の
snapshotLocation
フィールドに、スナップショットを保存するフォルダを指定します。
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
次のように置き換えます。
SNAPSHOTS_FOLDER
は、スナップショットを保存するバケット フォルダの URI に置き換えます。
例:
// 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
Terraform から環境のスナップショットの保存と読み込みを行うことはできません。
スナップショットの保存と読み込みは、環境に対して実施されるアクションであり、生成されるスナップショットは環境の定義の部分ではありません。Terraform は Cloud Composer 環境の構成のみを管理するため、そこから環境スナップショットの保存と読み込みを行うことはできません。
環境スナップショットを読み込む
Cloud Composer 1 では、スナップショットの保存のみが可能で、読み込みはできません。スナップショットは、Cloud Composer 1 環境から Cloud Composer 2 環境に読み込むことができます。たとえば、環境を Cloud Composer 2 に移行する場合です。