このページでは、追加のオブジェクト データを転送せずに既存のオブジェクトから作成する複合オブジェクトについて説明します。複合オブジェクトは、既存のオブジェクトに追加する場合や、複数のコンポーネントを並行してアップロードしたオブジェクトを再構成する場合に役立ちます。
作成オペレーション
作成オペレーションでは、新しい複合オブジェクトが作成されます。このオブジェクトのコンテンツは、指定された一連のソース オブジェクトを連結したものです。ソース オブジェクトはすべて、次の条件を満たしている必要があります。
作成を実行する場合:
- ソース オブジェクトは影響を受けません。
- 1~32 個のソース オブジェクトを使用できます。
- ソース オブジェクト自体を複合オブジェクトにすることができます。
- 結果として得られる複合オブジェクトは、ソース オブジェクトと同じストレージ クラスになります。
- ソース オブジェクトが後で置換または削除されても、結果として得られる複合オブジェクトは変更されません。
- gsutil を使用してオブジェクト作成を実行する場合、結果として得られる複合オブジェクトの
Content-Type
は最初のソース オブジェクトのContent-Type
と一致するように設定されます。
複合オブジェクトのメタデータ
複合オブジェクトのメタデータと他のオブジェクトのメタデータにはいくつかの違いがあります。
複合オブジェクトには、MD5 ハッシュのメタデータ フィールドはありません。
複合オブジェクトの ETag 値は MD5 ハッシュに基づいていないため、クライアント コードでは、複合オブジェクトの ETag 値は基になるオブジェクトが HTTP / 1.1 の IETF 仕様に応じて変化するたびに変化するということ以外、ETag 値について仮定することはできません。
各複合オブジェクトには、複合オブジェクト内に含まれる非複合オブジェクトの数をカウントするコンポーネント数メタデータ フィールドがあります。
- 複合オブジェクトを別の場所やストレージ クラスに書き換えると、コンポーネント数が 1 の複合オブジェクトになります。
複合オブジェクトの整合性チェック
Cloud Storage は、アップロード時に各ソース オブジェクトの整合性チェックを実行し、ダウンロード時に発信者が結果の複合オブジェクトの整合性チェックを実行できるようにするために、CRC32C を使用します。CRC32C は、そのコンポーネントの CRC32C 値から効率的に計算することができる誤り検出符号です。アプリケーションで以下のように CRC32C を使用する必要があります。
- ソース オブジェクトをアップロードする場合、下記にリストされているような CRC32C ライブラリを使用して各オブジェクトの CRC32C を計算し、その値をリクエストに含める必要があります。
- 作成オペレーションでは、リクエストに CRC32C を含める必要があります。Cloud Storage は、複合オブジェクトの CRC32C で応答します。これは、ソース・オブジェクトの CRC32C 値から CRC32C 値を作成して検証できます。
- ダウンロード時には、ダウンロードしたオブジェクトの CRC32C を計算し、その値をレスポンスに含まれた値と比較する必要があります。
- ソース オブジェクトのアップロード時と作成時との間に、アプリケーションでオブジェクトが変更される可能性がある場合は、競合状態を防止するために、ソース オブジェクトに世代固有の名前を付ける必要があります。
CRC32C 値を計算するためのライブラリには、C++ の Boost、Java の GoogleCloudPlatform crc32c、Python の crcmod、Ruby の digest-crc があります。また、CRC32C は、現在の Intel CPU のハードウェアでもサポートされています。
制限付きの追加と編集
作成オペレーションを使用して、制限付きのオブジェクトの追加と編集を実行できます。
追加を実行するには、データを新しい一時オブジェクトにアップロードし、この新しいデータとともに追加するオブジェクトを作成して、一時オブジェクトを削除します。作成オペレーションの出力には元のオブジェクトと同じ名前にすることもできます。
また、作成オペレーションを使用して、オブジェクト編集の基本的な機能をサポートすることもできます。たとえば、シーケンス {Y1, Y2, Y3} からオブジェクト X を作成し、Y2 のコンテンツを変更して、同じコンポーネントで X を再作成できます。これを行うには、これらのコンポーネントとコンポジットに対して課金されるようにするために、Y1、Y2、Y3 を削除せずに残しておく必要がありますので注意してください。
次のステップ
- オブジェクトを作成する。
- 並列複合アップロードの詳細を確認する。
- Cloud Storage の CRC32C と整合性チェックの詳細を確認する。