Cloud Storage オブジェクトについて

このページでは、Cloud Storage のリソースであるオブジェクトについて説明します。Cloud Storage の一般的な概要については、Cloud Storage プロダクトの概要をご覧ください。

オブジェクト

オブジェクトとは、Cloud Storage 内に保存する個々のデータのことです。バケットで作成できるオブジェクトの数に上限はありません。

オブジェクトは、オブジェクト データとオブジェクト メタデータという 2 つのコンポーネントで構成されます。通常、オブジェクト データは Cloud Storage に保存するファイルで、Cloud Storage にとっては完全に不透明です。オブジェクト メタデータは、オブジェクトのさまざまな性質を記述した名前と値のペアの集合です。

すべてのオブジェクトに共通のオブジェクト メタデータの 2 つの重要な部分は、オブジェクトの名前と世代番号です。Cloud Storage バケットにオブジェクトを追加するときに、オブジェクト名を指定すると世代番号が割り当てられます。名前と世代により、バケット内のオブジェクトを一意に識別します。

アクセス制御リスト(ACL)を使用して、個々のオブジェクトへのアクセスを制御できます。Identity and Access Management(IAM)を使用して、バケットまたはマネージド フォルダ内のすべてのオブジェクトへのアクセスを制御することもできます。

命名に関する考慮事項

Cloud Storage でオブジェクトに名前を付けるときは、互換性を確保しエラーを防ぐために、特定の要件に準拠することが重要です。これらの要件は、フラットな名前空間バケット階層型名前空間が有効なバケットの両方に適用されます。

一般的な要件

  • オブジェクト名には、有効な Unicode 文字を任意の順序で含めることができます。
  • オブジェクト名に、改行やラインフィード文字を含めることはできません。
    • gcloud CLI や Google Cloud コンソールなどのインターフェースを介して送信されたバックスラッシュは、内部でエスケープされます。たとえば、\n\\n になります。改行とラインフィードに関する制限は、厳密には ANSI エスケープ文字を指しています。
  • オブジェクト名の先頭を .well-known/acme-challenge/ にすることはできません。
  • オブジェクト名を「.」や「..」にすることはできません。

名前空間固有のオブジェクト サイズの上限

オブジェクト名の最大サイズは、バケットの名前空間によって異なります。

  • フラットな名前空間バケット内のオブジェクト名のサイズ: UTF-8 でエンコードする場合は 1~1,024 バイト。
  • 階層型名前空間が有効になっているバケット内のオブジェクト名のサイズ: オブジェクト名は次の 2 つの部分に分けられます。

    • フォルダ名: オブジェクトが存在するフォルダの名前。UTF-8 でエンコードされたフォルダ名の最大サイズは 512 バイトです。
    • ベース名: フォルダ内にあるオブジェクトの名前。UTF-8 でエンコードする場合、ベース名の最大サイズは 512 バイトです。

    たとえば、パス my-folder/my-object.txt は、my-folder/ という名前のフォルダ内に保存されている、ベース名が my-object.txt のオブジェクトを表します。

推奨事項

オブジェクト名では次のことを避けるよう強くおすすめします。

  • XML 1.0 で不正な制御文字(#x7F~#x84 および #x86~#x9F): オブジェクトを一覧表示するときにこれらの文字が原因で XML リストに問題が発生します。
  • # 文字: Google Cloud CLI コマンドは、#<数字文字列> で終わるオブジェクト名をバージョン識別子として解釈します。オブジェクト名に # が含まれていると、gcloud CLI を使用してバージョン指定されたオブジェクトのオペレーションを実行することが困難、または不可能になる可能性があります。
  • []*? 文字: Google Cloud CLI コマンドはこれらの文字をワイルドカードとして解釈するため、これらの文字がオブジェクト名に含まれていると、ワイルドカードのオペレーションを実行することが困難、または不可能になる可能性があります。また、*? は Windows のファイル名で有効な文字ではありません。
  • :"<>| 文字: Windows ではファイル名に有効な文字ではないため、ダウンロード方法に Windows ファイル名の変更が含まれていない場合、Windows ファイル名にこのような文字を使用するオブジェクトのダウンロードは失敗します。/ 文字は、Windows ではファイル名に有効な文字ではありませんが、通常はディレクトリ構造を模倣するためにオブジェクト名で使用できます。Google Cloud CLI などのツールは、Windows 環境にダウンロードするときに、この文字を自動的に \ に変換します。
  • 機密情報または個人を特定できる情報(PII): オブジェクト名は、オブジェクト データよりも広い範囲で表示されます。たとえば、オブジェクト名は、オブジェクトの URL やバケット内のオブジェクトを一覧表示するときに表示されます。

既存のオブジェクトの名前を直接変更することはできませんが、元のオブジェクトをコピーして削除することで、間接的にオブジェクトの名前を変更できます。

オブジェクトの名前空間

オブジェクトは次の名前空間に保存できます。

フラットな名前空間

オブジェクトをフラットな名前空間に保存するように構成されたバケットは、常にバケットの直下にオブジェクトを作成します。このようなフラットな名前空間バケットでは、バケット内に階層がなく、オブジェクトが存在するディレクトリやフォルダもありません。

便宜上、フラットな名前空間バケット内のオブジェクトがフォルダ階層に保存されているかのように扱う方法がいくつかあります。

たとえば、バケット your-bucketfolder1/file.txt という名前のオブジェクトを作成した場合、オブジェクトのパスは your-bucket/folder1/file.txt になりますが、Cloud Storage には folder1 という名前のフォルダは保存されません。Cloud Storage から見ると、文字列 folder1/ はオブジェクトの名前の一部になります。

ただし、オブジェクトの名前に / が含まれているため、一部のツールではフォルダのように見えます。たとえば、 Google Cloud コンソールを使用すると、オブジェクト folder1/file1.txt は、folder1 という名前のフォルダに file1.txt という名前のオブジェクトが存在しているように見えます。同様に、