このページでは、Cloud Storage の概要とその仕組みについて説明します。
Cloud Storage は、Google Cloudでオブジェクトを保存するためのサービスです。オブジェクトとは、任意の形式のファイルで構成される不変のデータのことです。オブジェクトをバケットと呼ばれるコンテナに保存します。
バケットはすべていずれかのプロジェクトに関連付けられており、複数のプロジェクトを 1 つの組織にまとめることができます。Compute Engine インスタンスと同様に、 Google Cloud の各プロジェクト、バケット、マネージド フォルダ、オブジェクトが Google Cloudのリソースになります。
プロジェクトを作成したら、Cloud Storage バケットを作成してバケットにオブジェクトをアップロードできます。また、バケットからオブジェクトをダウンロードすることもできます。さらに、指定したプリンシパルにデータへのアクセス権を付与したり、公共のインターネット上で誰でもデータにアクセスできるようにすることもできます。
Google Cloud 階層
Cloud Storage 構造を実際に適用する方法は次のとおりです。
- 組織: Example Inc. が - exampleinc.orgという Google Cloud組織を作成するとします。
- プロダクト: Example Inc. は複数のアプリケーションを構築しており、各アプリケーションはプロジェクトに関連付けられます。各プロジェクトに独自の Cloud Storage API のセットと他のリソースがあります。 
- バケット: 各プロジェクトに、オブジェクトを格納するコンテナである複数のバケットを含めることが可能です。たとえば、アプリで生成するすべての画像ファイル用に - photosバケットを作成し、別の- videosバケットを作成するとします。
- オブジェクト: 各バケットに格納できるオブジェクトに実質的に制限はありません。たとえば、 - puppy.pngという画像を含めることができます。
- 階層型名前空間が有効なバケット: バケットで階層型名前空間を有効にできます。階層型名前空間が有効になっているバケットでは、データを論理ファイル システム構造に保存できます。フォルダ管理オペレーションは、フォルダの作成、削除、一覧取得、名前変更など、信頼性を確保し管理機能を提供します。階層型名前空間は、分析、AI、ML ワークロードなどのデータ集約型のタスクに適しています。階層型名前空間が有効になっていないバケットと比較して、オブジェクトの読み取りと書き込みの初期 QPS 上限が最大 8 倍になります。 
- マネージド フォルダ: 各バケットには複数のマネージド フォルダを含めることができます。バケット全体に付与されているアクセス権を超えるアクセス権を追加することもできます。この追加のアクセス権は、マネージド フォルダ名と一致する接頭辞を持つオブジェクトに適用されます。たとえば、 - animals/というマネージド フォルダを作成して、指定したユーザーに- animals/puppy.pngや- animals/kitten.pngなどのオブジェクトへの追加アクセス権を付与できます。
Cloud Storage の基本ツール
以下に、Cloud Storage の基本的な操作方法をいくつか示します。
- コンソール: Google Cloud コンソールには、ブラウザでデータを管理するためのビジュアル インターフェースが用意されています。 
- Google Cloud CLI: gcloud CLI を使用すると、 - gcloud storageコマンドを使用してターミナルから Cloud Storage を操作できます。
- クライアント ライブラリ: Cloud Storage クライアント ライブラリでは、C++、C#、Go、Java、Node.js、PHP、Python、Ruby などの任意の言語を使用してデータを管理できます。 
- Terraform: Terraform は Infrastructure as Code(IaC)ツールで、Cloud Storage のインフラストラクチャのプロビジョニングに使用できます。 
- gRPC: gRPC を使用すると、Cloud Storage を操作できます。gRPC は、Google が開発した高パフォーマンスのオープンソース ユニバーサル RPC フレームワークです。gRPC では、プロトコル バッファを使用してサービスを定義できます。 
- Cloud Storage FUSE: Cloud Storage FUSE を使用すると、Cloud Storage バケットをローカル ファイル システムにマウントできます。これにより、標準のファイル システム セマンティクスを使用して、バケットからの読み取りやバケットへの書き込みを行うことができます。 
データの保護
オブジェクトを Cloud Storage にアップロードすると、データの保護と共有の方法をきめ細かく制御できます。以下に、Cloud Storage にアップロードするデータを保護する方法をいくつか示します。
- Identity and Access Management: IAM を使用して、 Google Cloud プロジェクトのリソースにアクセスできるユーザーを制御します。リソースには、Cloud Storage のバケットやオブジェクトのほか、Compute Engine インスタンスなどの Google Cloud エンティティも含まれます。プリンシパルにバケットやオブジェクトへの特定のアクセス権(たとえば、 - update、- create、- delete)を付与できます。
- データの暗号化: Cloud Storage では、デフォルトでサーバー側での暗号化を使用してデータを暗号化します。また、顧客管理の暗号鍵や顧客指定の暗号鍵など、追加のデータ暗号化オプションも使用できます。 
- 認証: データにアクセスするすべてのユーザーが適切な認証情報を持っていることを確認します。 
- 削除(復元可能): 最近削除されたオブジェクトとバケットを保持することで、偶発的または悪意のある削除でデータが完全に失われないようにします。Cloud Storage では、デフォルトですべてのバケットに対して削除(復元可能)が有効になり、保持期間は 7 日間です。 
- オブジェクトのバージョニング: オブジェクトのバージョニングを有効にすると、オブジェクトのライブ バージョンを置き換えるか削除する際に、そのオブジェクトを非現行バージョンとして保持できます。 
- バケット IP フィルタリング: バケット IP フィルタリングを使用すると、リクエストの送信元 IP アドレスに基づいてバケットへのアクセスを制限し、特定の IP アドレスまたは Virtual Private Cloud(VPC)による不正アクセスからデータを保護できます。 
- バケットロック: 保持ポリシーを指定して、バケット内のオブジェクトの保持期間を制御します。 
リソース名
各リソースには、ファイル名のような固有の名前が付いています。バケットのリソース名の形式は projects/_/buckets/BUCKET_NAME です。ここで、BUCKET_NAME はバケットの ID です。オブジェクトのリソース名の形式は projects/_/buckets/BUCKET_NAME/objects/OBJECT_NAME です。ここで、OBJECT_NAME はオブジェクトの ID です。
リソース名の末尾に付加される #NUMBER は、オブジェクトの特定の世代を示します。#0 は、オブジェクトの最新バージョンを示す特別な識別子です。#0 を追加することは、そのようにしないとオブジェクト名の最後の文字列が世代番号として解釈される場合に役立ちます。
クイックスタート ガイド
Cloud Storage の基本的な使い方については、次のガイドをご覧ください。
次のステップ
- Google Cloud コンソールまたは Google Cloud CLI を使用して Cloud Storage の基礎を確認する。
- Google Cloud Cloud Storage を使用するジャンプ スタート ソリューションを試す。
- クライアント ライブラリを使ってみる。
- Storage Transfer Service を使用して、オンライン データの Cloud Storage へのインポートまたは Cloud Storage バケット間でのインポートをすばやく行う。