0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GCP】Google Cloud Storage (GCS) 入門ガイド:高耐久・低コストなストレージを使いこなす

0
Posted at

はじめに

この記事では、Google Cloudの代表的なオブジェクトストレージサービスであるCloud Storageについて解説します。基本概念からアクセス制御、データ管理機能まで詳しく説明します。

Cloud Storage

~安全で信頼性が高いストレージサービス~

Cloud Storageとは

Cloud Storageは、Google Cloudが提供するオブジェクトストレージサービスです。あらゆる種類のデータを安全に保存し、いつでもアクセスできます。

Cloud Storageの特徴

特徴 説明
高い耐久性 99.999999999%(イレブンナイン)の耐久性
高い可用性 99.9%〜99.99%のSLA
無制限の容量 保存できるデータに上限なし
グローバルアクセス 世界中からのアクセスが可能
自動暗号化 保存データは自動的に暗号化

主なユースケース

ユースケース 説明
Webサイトの静的コンテンツ 画像、CSS、JavaScript
バックアップと復元 定期的なバックアップの保存
アーカイブ 長期保存データ
データレイク 分析用の生データ保存
コンテンツ配信 Cloud CDNとの連携
機械学習 トレーニングデータの保存

他のストレージサービスとの比較

サービス タイプ 用途
Cloud Storage オブジェクト 非構造化データ
Persistent Disk ブロック VMのディスク
Filestore ファイル 共有ファイルシステム
Cloud SQL データベース リレーショナルデータ
BigQuery データウェアハウス 分析用データ

Cloud Storageを使う流れ

~ストレージを使うまで~

基本的な利用フロー

ステップ1:バケットの作成

バケットはオブジェクトを格納するコンテナです。

# バケット作成(コマンドライン)
gsutil mb -l asia-northeast1 gs://my-unique-bucket-name

# または gcloud
gcloud storage buckets create gs://my-unique-bucket-name \
    --location=asia-northeast1

ステップ2:オブジェクトのアップロード

# ファイルのアップロード
gsutil cp local-file.txt gs://my-bucket/

# ディレクトリの一括アップロード
gsutil -m cp -r local-directory gs://my-bucket/

# gcloud でのアップロード
gcloud storage cp local-file.txt gs://my-bucket/

ステップ3:アクセス設定

# 公開読み取りアクセスを付与
gsutil iam ch allUsers:objectViewer gs://my-bucket

# 特定ユーザーにアクセス権を付与
gsutil iam ch user:alice@example.com:objectAdmin gs://my-bucket

ステップ4:オブジェクトの利用

# ダウンロード
gsutil cp gs://my-bucket/file.txt .

# オブジェクト一覧
gsutil ls gs://my-bucket/

# オブジェクトの削除
gsutil rm gs://my-bucket/file.txt

コンソールからの操作

  1. Google Cloud Console → Cloud Storage → ブラウザ
  2. 「バケットを作成」をクリック
  3. バケット名、ロケーション、ストレージクラスを設定
  4. ファイルをドラッグ&ドロップでアップロード

ストレージクラス

~用途に応じて選べるストレージ~

ストレージクラスの種類

データのアクセス頻度に応じて最適なストレージクラスを選択できます。

ストレージクラスの詳細

クラス 最小保存期間 アクセス頻度 用途
Standard なし 高頻度 アクティブデータ
Nearline 30日 月1回程度 バックアップ
Coldline 90日 年数回 災害復旧
Archive 365日 年1回未満 長期アーカイブ

料金の比較(2024年、asia-northeast1)

クラス 保存料金 取得料金 最小課金期間
Standard 高い 無料 なし
Nearline 低い 30日
Coldline 低い 90日
Archive 最も低い 高い 365日

ロケーションタイプ

タイプ 説明 用途
リージョン 単一リージョン 低遅延、コスト重視
デュアルリージョン 2つのリージョン 高可用性
マルチリージョン 複数リージョン 最高の可用性

Autoclass機能

アクセスパターンに基づいて自動的にストレージクラスを変更:

# Autoclassを有効にしてバケット作成
gcloud storage buckets create gs://my-bucket \
    --location=asia-northeast1 \
    --enable-autoclass

オブジェクトとバケット

~ファイルと保存する入れ物~

バケット

バケットは、オブジェクトを格納するためのコンテナです。

バケットの命名規則

ルール 説明
長さ 3〜63文字
使用可能文字 小文字、数字、ハイフン、アンダースコア
開始文字 文字または数字
一意性 グローバルで一意
禁止 google、g00gleなどの類似名

オブジェクト

オブジェクトは、Cloud Storageに保存される個々のファイルです。

属性 説明
名前 バケット内で一意のパス
データ 実際のファイル内容
メタデータ 追加情報(タイプ、作成日等)
世代 バージョン管理用のID

オブジェクト名(キー)

オブジェクト名は疑似ディレクトリ構造を表現できます:

gs://my-bucket/folder1/folder2/file.txt
              └─────────────────────┘
                   オブジェクト名

注意: Cloud Storageにはフォルダの概念がありません。/はオブジェクト名の一部です。

メタデータ

各オブジェクトには以下のメタデータが付与されます:

メタデータ 説明
Content-Type MIMEタイプ
Content-Encoding 圧縮方式
Cache-Control キャッシュ設定
カスタムメタデータ ユーザー定義の情報
# メタデータの設定
gsutil setmeta -h "Content-Type:image/png" \
    -h "x-goog-meta-category:product" \
    gs://my-bucket/image.png

アクセス制限

~データの機密性を守るしくみ~

アクセス制御の方式

Cloud Storageでは複数のアクセス制御方式を提供しています。

均一なバケットレベルアクセス(推奨)

IAMのみでアクセスを制御します。

# 均一アクセスを有効化
gcloud storage buckets update gs://my-bucket \
    --uniform-bucket-level-access

メリット:

  • シンプルな権限管理
  • 一貫性のあるポリシー
  • 推奨されるベストプラクティス

IAMロール

ロール 説明
roles/storage.objectViewer オブジェクトの読み取り
roles/storage.objectCreator オブジェクトの作成
roles/storage.objectAdmin オブジェクトの完全な制御
roles/storage.admin バケットとオブジェクトの管理
# IAMポリシーの設定
gcloud storage buckets add-iam-policy-binding gs://my-bucket \
    --member="user:alice@example.com" \
    --role="roles/storage.objectViewer"

署名付きURL

一時的なアクセス権を付与するURL:

# 署名付きURLの生成(1時間有効)
gsutil signurl -d 1h key.json gs://my-bucket/private-file.txt

特徴:

  • 認証情報なしでアクセス可能
  • 有効期限を設定可能
  • 読み取り/書き込みを指定可能

公開アクセスの防止

機密データの意図しない公開を防ぐ:

# 公開アクセスの防止を有効化
gcloud storage buckets update gs://my-bucket \
    --public-access-prevention

VPCサービスコントロール

組織レベルでのデータ漏洩防止:

  • 許可されたVPCからのみアクセス
  • 外部への流出を防止
  • 監査ログの統合

オブジェクトのアップロードとダウンロード

~さまざまなアップロード方法を提供~

アップロード方法の種類

シンプルアップロード

小さなファイル(〜5MB)に適した方法:

gsutil cp small-file.txt gs://my-bucket/

再開可能なアップロード

大きなファイルに適した方法。途中で失敗しても再開可能:

# 再開可能なアップロード(自動)
gsutil -o GSUtil:resumable_threshold=1M cp large-file.zip gs://my-bucket/

並列アップロード

複数ファイルを同時にアップロード:

# -m オプションで並列実行
gsutil -m cp -r local-folder/ gs://my-bucket/

ストリーミングアップロード

標準入力からのアップロード:

# パイプからのアップロード
cat large-file.txt | gsutil cp - gs://my-bucket/output.txt

ダウンロード方法

# 単一ファイルのダウンロード
gsutil cp gs://my-bucket/file.txt .

# ディレクトリの一括ダウンロード
gsutil -m cp -r gs://my-bucket/folder/ ./local-folder/

# ストリーミングダウンロード
gsutil cat gs://my-bucket/file.txt | head -n 10

Transfer Service

大規模データの転送に適したサービス:

転送元 説明
オンプレミス Transfer Service for on-premises data
AWS S3 Storage Transfer Service
Azure Blob Storage Transfer Service
HTTP/HTTPS URL Storage Transfer Service

バージョニングとライフサイクル管理

~オブジェクトの履歴を管理する方法~

オブジェクトのバージョニング

バージョニングを有効にすると、オブジェクトの変更履歴を保持できます。

バージョニングの有効化

# バージョニングを有効化
gsutil versioning set on gs://my-bucket

# バージョニングの状態確認
gsutil versioning get gs://my-bucket

バージョンの操作

# すべてのバージョンを表示
gsutil ls -a gs://my-bucket/

# 特定バージョンのダウンロード
gsutil cp gs://my-bucket/file.txt#1234567890 .

# 削除されたオブジェクトの復元
gsutil cp gs://my-bucket/deleted-file.txt#1234567890 gs://my-bucket/deleted-file.txt

ライフサイクル管理

オブジェクトのライフサイクルを自動管理:

ライフサイクルルールの設定

{
  "lifecycle": {
    "rule": [
      {
        "action": {"type": "SetStorageClass", "storageClass": "NEARLINE"},
        "condition": {"age": 30}
      },
      {
        "action": {"type": "SetStorageClass", "storageClass": "COLDLINE"},
        "condition": {"age": 120}
      },
      {
        "action": {"type": "Delete"},
        "condition": {"age": 365}
      }
    ]
  }
}
# ライフサイクルルールの適用
gsutil lifecycle set lifecycle.json gs://my-bucket

条件の種類

条件 説明
age オブジェクトの経過日数
createdBefore 指定日より前に作成
numNewerVersions 新しいバージョンの数
isLive 現行バージョンかどうか
matchesStorageClass ストレージクラス
matchesPrefix プレフィックスに一致
matchesSuffix サフィックスに一致

保持ポリシー

コンプライアンス要件に対応するためのデータ保持:

# 保持ポリシーの設定(365日)
gsutil retention set 365d gs://my-bucket

# Object Lock(削除・上書き防止)
gsutil retention lock gs://my-bucket

まとめ

この記事では、Cloud Storageについて以下の内容を学びました:

  • Cloud Storageは高耐久性・高可用性のオブジェクトストレージ
  • 4つのストレージクラスでコストを最適化
  • バケットとオブジェクトでデータを管理
  • IAMと署名付きURLでアクセスを制御
  • 複数のアップロード方法で効率的にデータ転送
  • バージョニングとライフサイクル管理でデータを保護

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?