業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【Hakkyの社内Wiki】Strapi
クラウドとオンプレの違いAIシステム導入時におすすめのクラウドシステムスクレイピングのためのプロキシサーバのAPI
TerraformでGCPからAWSのリソースにアクセスするGoogle Cloudとは?
AI

執筆者:Handbook編集部

Google Cloud Storageの特定のバケットにライフサイクルを適用する方法

はじめに

Google Cloud Platform (GCP) は、多くのサービスを提供するクラウドプラットフォームです。その中でも、Google Cloud Storage(GCS)はデータの保存に非常に役立つサービスです。この記事では、GCS 内の特定の名前パターンを持つバケットにライフサイクルルールを適用する手順を詳しく解説します。

ライフサイクルを適用する事によるメリット・デメリット

  • メリット:

    • コスト削減: 一定の期間後に不要となったデータを自動的に削除することで、ストレージに関連するコストを節約できます。
    • 自動化: 手動でのデータの削除や管理の必要がなく、一度ルールを設定すれば自動的に適用されるため、運用の手間を削減できます。
    • データ整理: 期限を過ぎた古いデータが自動的に削除されることで、データの整理が容易になります。
  • デメリット:

    • 誤削除のリスク: 適切な設定がなされない場合、意図しないデータの削除が行われる可能性があります。
    • 変更の必要性: ビジネスの要件が変わった場合や、データの保持期間に変更があった場合、ルールの再設定が必要です。

Google Cloud へのログイン

最初に、GCP へのアクセスを設定する必要があります。コマンドラインやターミナルを使用して、以下のコマンドを実行します。

gcloud auth login

ブラウザが開き、GCP へのログインを求められます。ログインした後、コマンドラインに「認証が完了しました」というメッセージが表示されるはずです。

Google Cloud でプロジェクトの選定

次に、操作対象の GCP プロジェクトを選択します。以下のコマンドを使い、対象のプロジェクト ID を設定します。

gcloud config set project [YOUR_PROJECT_ID]

以下の様なメッセージが表示されれば成功です。

Updated property [core/project].

このコマンド実行後、指定したプロジェクト ID が選択されたことを示すメッセージが表示されるはずです。

ライフサイクル設定の定義ファイルを作成

ライフサイクルの設定を含む JSON ファイル(lifecycle_config.json)を作成します。

{
  "rule": [
    {
      "action": {
        "type": "Delete"
      },
      "condition": {
        "age": 1
      }
    }
  ]
}

この設定は、オブジェクトが 1 日古くなったら削除されることを意味します。

warning
注意

GCS はオブジェクトの作成日からの経過日数を基に削除操作を行うため、age を 0 に設定することはできません。最も早く削除できるのは 1 日後です。

Google Cloud Storage のライフサイクルの設定

GCS のバケットにライフサイクルルールを適用するための Python スクリプトを次に示します。このスクリプトでは、以下の名前パターンを持つバケットを対象としています:

# 今回は以下の文字列が含まれるバケットが対象としています。
regression
image
video
speech
timeseries
import json
from google.cloud import storage

def load_lifecycle_config():
    """固定のJSONファイル(lifecycle_config.json)を読み込む"""
    try:
        with open('lifecycle_config.json', 'r') as file:
            return json.load(file)
    except (FileNotFoundError, json.JSONDecodeError) as e:
        print(f"Error loading lifecycle_config.json: {e}")
        exit(1)

def apply_lifecycle_to_buckets(lifecycle_config, patterns):
    """ライフサイクル設定をバケットに適用する"""
    try:
        # GCSクライアントの初期化
        client = storage.Client()

        # バケットのリストを取得
        buckets = list(client.list_buckets())
    except Exception as e:
        print(f"Error connecting to Google Cloud Storage or retrieving buckets: {e}")
        exit(1)

    # バケットをループして、名前が指定されたパターンのいずれかを含むバケットを見つける
    for bucket in buckets:
        if any(pattern in bucket.name for pattern in patterns):
            try:
                bucket.patch(lifecycle=lifecycle_config)
                print(f"Applied lifecycle config to bucket: {bucket.name}")
            except Exception as e:
                print(f"Error applying lifecycle to bucket {bucket.name}: {e}")

    print("Completed lifecycle configuration for all matching buckets.")

if __name__ == "__main__":
    # 対象となるバケット名のパターンリスト
    patterns = ["regression", "image", "video", "speech", "timeseries"]

    # ライフサイクル設定の読み込み
    lifecycle_config = load_lifecycle_config()

    # ライフサイクル設定の適用
    apply_lifecycle_to_buckets(lifecycle_config, patterns)

実行結果

「Bucket [BUCKET_NAME]: Lifecycle rule applied successfully.」

Python スクリプトを保存した後、スクリプトを実行します。期待される結果は、指定した名前パターンを持つ各バケットに対して「Bucket [BUCKET_NAME]: Lifecycle rule applied successfully.」というメッセージがコンソールに表示されることです。

実用的な事例

  • バックアップデータの管理: 企業が毎日のデータバックアップを保存している場合、一定の期間が経過したバックアップデータ(例えば 30 日以上前のデータ)を自動的に削除することで、保存コストを削減できます。
JSONファイル(lifecycle_config.json)の「age」の日数を変更する事で実現出来ます。

{
  "rule": [
    {
      "action": {
        "type": "Delete"
      },
      "condition": {
        "age": 30  #要件に合わせて日数を変更
      }
    }
  ]
}
  • 静的ウェブサイトのコンテンツ管理: ウェブサイトの古いコンテンツや過去のキャンペーンのアセットを一定の期間経過後に自動的に削除することができます。

  • 一時的なデータのクリーンアップ: データの一時的な共有や分析のために短期間だけ保存が必要な場合、一定の期間経過後にそのデータを自動的に削除することができます。

まとめ

GCS バケットにライフサイクルルールを適用することは、ストレージコストの節約や古いデータの自動的な管理に非常に役立ちます。しかし、ルールの設定には注意が必要です。上記の手順を参考に、あなたの GCP プロジェクト内の適切なバケットにこのルールを適用してみてください。

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年06月15日に最終更新
読み込み中...