Cloud Storage のプロダクト概要

このページでは、Cloud Storage の概要とその仕組みについて説明します。

Cloud Storage は、Google Cloud でオブジェクトを保存するためのサービスです。オブジェクトとは、任意の形式のファイルで構成される不変のデータのことです。オブジェクトをバケットと呼ばれるコンテナに保存します。バケットにマネージド フォルダを含めることもできます。このフォルダを使用すると、共有の名前接頭辞を持つオブジェクトのグループにアクセスできます。

バケットはすべていずれかのプロジェクトに関連付けられており、複数のプロジェクトを 1 つの組織にまとめることができます。Compute Engine インスタンスと同様に、Google Cloud のそれぞれのプロジェクト、バケット、マネージド フォルダ、オブジェクトがリソースになります。

プロジェクトを作成したら、Cloud Storage バケットを作成してバケットにオブジェクトをアップロードできます。また、バケットからオブジェクトをダウンロードすることもできます。さらに、指定したプリンシパルにデータへのアクセス権を付与したり、公共のインターネット上で誰でもデータにアクセスできるようにしたりすることもできます。

Google Cloud の階層

Cloud Storage 構造を実際に適用する方法は次のとおりです。

  • 組織: Example Inc. が exampleinc.org という Google Cloud 組織を作成するとします。

  • プロダクト: Example Inc. は複数のアプリケーションを構築しており、各アプリケーションはプロジェクトに関連付けられます。各プロジェクトに独自の Cloud Storage API のセットと他のリソースがあります。

  • バケット: 各プロジェクトに、オブジェクトを格納するコンテナである複数のバケットを含めることが可能です。たとえば、アプリで生成するすべての画像ファイル用に photos バケットを作成し、別の videos バケットを作成するとします。

  • オブジェクト: 各バケットに格納できるオブジェクトに実質的に制限はありません。たとえば、puppy.png という画像を含めることができます。

  • マネージド フォルダ: 各バケットには複数の管理フォルダを含めることができます。バケット全体に付与されているアクセス権を超えるアクセス権を追加することもできます。この追加のアクセス権は、マネージド フォルダ名と一致する接頭辞を持つオブジェクトに適用されます。たとえば、animals/ というマネージド フォルダを作成して、指定したユーザーに animals/puppy.pnganimals/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 などの任意の言語を使用してデータを管理できます。

  • REST API: JSON または XML API を使用してデータを管理します。

  • Terraform: Terraform は Infrastructure as Code(IaC)ツールで、Cloud Storage のインフラストラクチャのプロビジョニングに使用できます。

  • Cloud Storage FUSE: Cloud Storage FUSE を使用すると、Cloud Storage バケットをローカル ファイル システムにマウントできます。これにより、標準のファイル システム セマンティクスを使用して、バケットからの読み取りやバケットへの書き込みを行うことができます。

データの保護

オブジェクトを Cloud Storage にアップロードすると、データの保護と共有の方法をきめ細かく制御できます。以下に、Cloud Storage にアップロードするデータを保護する方法をいくつか示します。

  • Identity and Access Management: IAM を使用すると、Google Cloud プロジェクトのリソースにアクセスするユーザーを制御できます。リソースには、他の Google Cloud エンティティ(Cloud Storage のバケットやオブジェクト、Compute Engine インスタンスなど)が含まれます。プリンシパルにバケットやオブジェクトへの特定のアクセス権(たとえば、updatecreatedelete)を付与できます。

  • データの暗号化: Cloud Storage では、デフォルトでサーバー側での暗号化を使用してデータを暗号化します。また、顧客管理の暗号鍵顧客指定の暗号鍵など、追加のデータ暗号化オプションも使用できます。

  • 認証: データにアクセスするすべてのユーザーが適切な認証情報を持っていることを確認します。

  • バケットロック: 保持ポリシーを指定して、バケット内のオブジェクトの保持期間を制御します。

  • 削除(復元可能): 最近削除されたオブジェクトを保持することで、偶発的または悪意のある削除からデータが完全に失われることを防ぎます。Cloud Storage では、デフォルトですべてのバケットに対して削除(復元可能)が有効となり、保持期間は 7 日間です。

  • オブジェクトのバージョニング: オブジェクトのバージョニングを有効にすると、オブジェクトのライブ バージョンを置き換えるか削除する際に、そのオブジェクトを非現行バージョンとして保持できます。

リソース名

各リソースには、ファイル名のような固有の名前が付いています。バケットのリソース名の形式は projects/_/buckets/BUCKET_NAME です。ここで、BUCKET_NAME はバケットの ID です。オブジェクトのリソース名の形式は projects/_/buckets/BUCKET_NAME/objects/OBJECT_NAME です。ここで、OBJECT_NAME はオブジェクトの ID です。

リソース名の末尾に付加される #NUMBER は、オブジェクトの特定の世代を示します。#0 は、オブジェクトの最新バージョンを示す特別な識別子です。#0 を追加することは、そのようにしないとオブジェクト名の最後の文字列が世代番号として解釈される場合に役立ちます。

クイックスタート ガイド

Cloud Storage の基本的な使い方については、次のガイドをご覧ください。

他のプロダクトをお探しですか?

Cloud Storage が適切なストレージ ソリューションでない場合は、次のストレージ サービスの詳細をご確認ください。

  • Google ドライブ: 個人ファイルの保存、管理、共有を行います。
  • Cloud Storage for Firebase: モバイル アプリケーション用のデータを管理します。
  • Persistent Disk: Compute Engine 仮想マシンにブロック ストレージを追加します。
  • Filestore: GKE クラスタへのマルチライター アクセス用のファイル ストレージを追加します。

次のステップ