はじめに
この記事では、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
コンソールからの操作
- Google Cloud Console → Cloud Storage → ブラウザ
- 「バケットを作成」をクリック
- バケット名、ロケーション、ストレージクラスを設定
- ファイルをドラッグ&ドロップでアップロード
ストレージクラス
~用途に応じて選べるストレージ~
ストレージクラスの種類
データのアクセス頻度に応じて最適なストレージクラスを選択できます。
ストレージクラスの詳細
| クラス | 最小保存期間 | アクセス頻度 | 用途 |
|---|---|---|---|
| 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でアクセスを制御
- 複数のアップロード方法で効率的にデータ転送
- バージョニングとライフサイクル管理でデータを保護