G-genの山崎です。 Google Cloud (旧称 GCP) のCloud Storageのバージョニング・ライフサイクル管理設定について、代表的なユースケースを用いて解説します。
Cloud Storage とは
Cloud Storage は、データ容量が無制限、かつ耐久性の高いストレージサービスで、略称として GCS とも呼称されます (Google Cloud Storage の略) 。
Cloud Storage は、上記の特性から以下のような様々な用途で利用することができます。
- システム間のデータ授受
- データ分析における、未加工データ(データレイク)
- 各種データのバックアップ
Cloud Storage 上、各種ファイルは、バケットと呼ばれるデータを入れる箱の中に、オブジェクトとして、保存されます。
Cloud Storage の全体像について確認する場合は、以下の記事を参照いただければと思います。
blog.g-gen.co.jp
バージョニング
バージョニングとは、オブジェクトを上書きした際に、上書き前のオブジェクトを過去のバージョン(以降、非現行バージョン)として保持する機能のことを指します。
また、オブジェクトを削除した際も同様に、削除したオブジェクトを非現行バージョンとして保持することができます。
バージョニングの設定は、バケット単位で行うことができます。
参考:オブジェクトのバージョニング
ライフサイクル管理
ライフサイクル管理とは、オブジェクトに対して、条件(オブジェクトが作成されてから30日経過 等)を設定し、その条件に該当するオブジェクトに対して、削除やストレージクラスの変更を自動的に実施する機能のことを指します。
ライフサイクル管理の設定は、バージョニング同様、バケット単位で行うことができます。
参考:オブジェクトのライフサイクル管理
バージョニング・ライフサイクル管理設定
バージョニング・ライフサイクル管理の設定はどちらも、GoogleCloudコンソール、コマンドラインで実施することができます。
以降、具体的なユースケースに対し、どのように設定を行えばよいか、解説していきます。
今回使用するライフサイクルの条件、入力内容、発動条件は以下となります。
No. | 条件 | 入力内容 | 発動条件 |
---|---|---|---|
1 | 経過日数 (age) |
日数 | オブジェクトが作成されてから、入力した日数以上経過したか |
2 | 新しいバージョンの数 (numNewerVersions) |
世代数 | 自身のオブジェクトより、新しいオブジェクトが入力した世代数分存在するか |
3 | 非現行になってからの日数 (daysSinceNoncurrentTime) |
日数 | オブジェクトが非現行バージョンになってから、入力した日数以上経過したか |
4 | ライブ状態 (isLive) |
ライブor現行以外 | オブジェクトが現行バージョンか非現行バージョンか |
ケース①:オブジェクトを2世代保持したい
条件を設定したいバケットに対して、以下の内容を登録します。
- バージョニング:オン
- ライフサイクル:以下のライフサイクルルールを作成
ルール | アクション | オブジェクト条件 |
---|---|---|
1 | オブジェクトを削除する | 新しいバージョンの数:2 |
注意点
単純にオブジェクトを上書きするだけの運用であれば、現行バージョンと、最新の非現行バージョンの2世代のオブジェクトが保持されます。
しかし、現行バージョンのオブジェクトを削除した場合は、現行バージョンが存在しない状態となるため、最新の非現行バージョンと、最新の一つ前の非現行バージョンの2世代のオブジェクトが保持されます。
参考:numNewerVersions
ケース②:オブジェクトが作成されてから、10日後に削除したい
条件を設定したいバケットに対して、以下の内容を登録します。
- バージョニング:オフ
- ライフサイクル:以下のライフサイクルルールを作成
ルール | アクション | オブジェクト条件 |
---|---|---|
1 | オブジェクトを削除する | 経過日数:10 |
注意点
経過日数は、あくまでもそのオブジェクトが登録された時間を起点として、判定されます。
そのため、もしバージョニングをオンにした状況で、現行バージョンのオブジェクトが上記条件に該当した場合、そのオブジェクトは非現行バージョンとはならず、完全に削除されます。
もし、現行バージョンをいきなり完全に削除するのではなく、 非現行バージョンとして、保持したい場合は、オブジェクト条件に 「ライブ状態:ライブ」を追加する必要があります。(ケース④参照)
参考:age
ケース③:オブジェクトが非現行バージョンになってから、5日後に削除したい
条件を設定したいバケットに対して、以下の内容を登録します。
- バージョニング:オン
- ライフサイクル:以下のライフサイクルルールを作成
ルール | アクション | オブジェクト条件 |
---|---|---|
1 | オブジェクトを削除する | 非現行になってからの日数:5 |
ケース④:オブジェクトが作成されてから5日後に現行バージョンを非現行バージョンとし、その2日後に非現行バージョンを削除したい
条件を設定したいバケットに対して、以下の内容を登録します。
- バージョニング:オン
- ライフサイクル:以下の2つのライフサイクルルールを作成
ルール | アクション | オブジェクト条件1 | オブジェクト条件2 | 備考 |
---|---|---|---|---|
1 | オブジェクトを削除する | 経過日数:5 | ライブ状態:ライブ | 現行バージョンの削除 |
2 | オブジェクトを削除する | 非現行になってからの日数:2 | ライブ状態:現行以外 | 非現行バージョンの削除 |
注意点
現行バージョンのオブジェクトに対して、上書き、もしくは削除を実施した場合は、そのオペレーションを実施したタイミングで非現行バージョンとなります。
そのため、そのオペレーションを実施した2日後に、上記ルールの2が適用され、非現行バージョンとなったオブジェクトは、完全に削除されます。
山崎 曜(記事一覧)
クラウドソリューション部
元は日系大手SIerにて金融の決済領域のお客様に対して、PM/APエンジニアとして、要件定義〜保守運用まで全工程に従事。
Google Cloud 全 11 資格保有。
フルスタックな人材を目指し、日々邁進。