S3 バッチオペレーション の基本 - Amazon Simple Storage Service

S3 バッチオペレーション の基本

S3 バッチオペレーションを使用すると、Amazon S3 のオブジェクトに対して大規模なバッチオペレーションを実行できます。S3 バッチオペレーションは、指定した Amazon S3 のオブジェクトのリストに対して 1 つのオペレーションまたはアクションを実行できます。

S3 バッチオペレーション ジョブの仕組み

ジョブは、S3 バッチオペレーション の機能の基本単位です。ジョブには、オブジェクトのリストに対して指定されたオペレーションを実行するために必要なすべての情報が含まれています。

ジョブを作成するには、S3 バッチオペレーション にオブジェクトのリストを渡し、それらのオブジェクトに対して実行するアクションを指定します。S3 バッチオペレーション は次のオペレーションをサポートします。

マニフェストでジョブが処理するオブジェクトを一覧表示します。ジョブは、そのマニフェストに含まれる各オブジェクトで指定されたオペレーションを実行します。CSV 形式の Amazon S3 インベントリ レポートをマニフェストとして使用できます。これにより、バケット内にあるオブジェクトの大規模なリストを簡単に作成できます。1 つのバケット内に含まれるカスタマイズされたオブジェクトのリストに対してバッチオペレーションを実行できるように、シンプルな CSV 形式でマニフェストを指定することもできます。

ジョブを作成すると、Amazon S3 はマニフェスト内のオブジェクトのリストを処理し、各オブジェクトに対して指定されたオペレーションを実行します。ジョブの実行中は、プログラムまたは Amazon S3 コンソールを使って進捗状況を監視できます。終了時に完了レポートを生成するようにジョブを設定することもできます。完了レポートには、ジョブによって実行された各タスクの結果が示されます。ジョブのモニタリングの詳細については、「S3 バッチオペレーション ジョブの管理」を参照してください。

マニフェストの指定

マニフェストとは、Amazon S3 が作用するオブジェクトキーをリストする Amazon S3 オブジェクトです。ジョブのマニフェストを作成するには、マニフェストオブジェクトキー、ETag、およびオプションでバージョン ID を指定します。マニフェストの内容は URL エンコードされている必要があります。顧客指定のキーを使用したサーバー側の暗号化 (SSE-C) および AWS Key Management Service (SSE-KMS) カスタマーマスター (CMK) を使用したサーバー側の暗号化を使用するマニフェストはサポートされていません。マニフェストには、各オブジェクトのバケット名、オブジェクトキー、およびオプションでオブジェクトバージョンを含める必要があります。マニフェストの他のフィールドは、S3 バッチオペレーション では使用されません。

以下の 2 つの形式のいずれかを使用して、ジョブ作成リクエストでマニフェストを指定できます。

  • Amazon S3 インベントリレポート — CSV 形式化された Amazon S3 インベントリレポートである必要があります。インベントリレポートに関連付けられた manifest.json ファイルを指定する必要があります。インベントリレポートの詳細については、「 Amazon S3 インベントリ」を参照してください。インベントリレポートにバージョン ID が含まれている場合、S3 バッチオペレーション は指定されたオブジェクトバージョンで作動します。

    注記

    S3 バッチオペレーション では、AWS KMS で暗号化された CSV 形式のインベントリレポートがサポートされています。

  • CSV ファイル — ファイルの各行には、バケット名、オブジェクトキー、およびオプションでオブジェクトバージョンが含まれている必要があります。オブジェクトキーは、次の例に示されているように、URL エンコードする必要があります。マニフェストには、すべてのオブジェクトのバージョン ID を含めるか、すべてのオブジェクトのバージョン ID を省略する必要があります。CSV マニフェスト形式の詳細については、『Amazon Simple Storage Service API Reference』の「JobManifestSpec」を参照してください。

    注記

    S3 バッチオペレーション では、AWS KMS で暗号化された CSV 形式のマニフェストファイルはサポートされていません。

    CSV 形式のマニフェスト(バージョン ID なし)の例を以下に示します。

    Examplebucket,objectkey1 Examplebucket,objectkey2 Examplebucket,objectkey3 Examplebucket,photos/jpgs/objectkey4 Examplebucket,photos/jpgs/newjersey/objectkey5 Examplebucket,object%20key%20with%20spaces

    CSV 形式のマニフェスト(バージョン ID あり)の例を以下に示します。

    Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w
重要

マニフェスト内のオブジェクトがバージョニング対応のバケット内にある場合は、そのオブジェクトのバージョン ID を指定する必要があります。ジョブを作成すると、S3 バッチオペレーション は、ジョブを実行する前にすべてのマニフェストを解析します。ただし、これによってバケットの状態は「スナップショット」されません。

マニフェストには数十億ものオブジェクトを含めることができるため、ジョブの実行には長時間かかる場合があります。ジョブの実行中にオブジェクトを新しいバージョンで上書きし、そのオブジェクトのバージョン ID を指定しなかった場合、Amazon S3 は作成時に存在していたバージョンではなく、最新バージョンのオブジェクトでオペレーションを実行します。この動作を回避する唯一の方法は、マニフェスト内でリストされたオブジェクトにバージョン ID を指定することです。