Amazon S3 バッチオペレーションを使用すると、特定の Amazon S3 オブジェクトのリストに対して大規模なバッチオペレーションを実行できます。このセクションでは、S3 バッチ操作ジョブの作成に必要な情報と CreateJob
リクエストの結果について説明します。また、AWS Command Line Interface (AWS CLI)、AWS SDK for Java を使用したバッチオペレーションジョブの作成手順についても説明します。
S3 バッチオペレーションジョブを作成するときに、すべてのタスクまたは失敗したタスクについてのみ完了レポートをリクエストできます。少なくとも 1 つのタスクが正常に呼び出される限り、S3 バッチオペレーションは、完了、失敗、またはキャンセルされたジョブに関するレポートを生成します。詳細については、「例: S3 バッチ操作完了レポート」を参照してください。
次の動画では、Amazon S3 コンソールを使用してバッチオペレーションジョブを作成する方法の簡単なデモンストレーションを提供しています
バッチ操作ジョブのリクエストの要素
S3 バッチ操作ジョブを作成するには、次の情報を指定する必要があります。
- オペレーション
-
S3 バッチ操作でマニフェストのオブジェクトに対して実行するオペレーションを指定します。オペレーションのタイプごとに、そのオペレーションに固有のパラメータを受け入れます。バッチオペレーションを使用すると、オペレーションを一括で実行でき、各オブジェクトに対してそのオペレーションを 1 つずつ実行した場合と同じ結果が得られます。
- マニフェスト
-
マニフェストは、S3 バッチオペレーションで指定したアクションを実行するすべてのオブジェクトのリストです。バッチオペレーションジョブのマニフェストは、次の方法で指定できます。
-
カスタマイズした CSV 形式の独自のオブジェクトリストを手動で作成します。
-
既存の CSV-形式の S3 インベントリを使用したデータのカタログ化と分析 レポートを選択します。
-
直接バッチオペレーションでは、ジョブの作成時に指定したオブジェクトフィルター条件に基づいてマニフェストを自動的に生成します。このオプションは、Amazon S3 コンソールで作成したバッチレプリケーションジョブ、AWS CLI、AWS SDK、または Amazon S3 REST API を使用して作成した任意のジョブタイプで使用できます。
注記
-
マニフェストの指定方法を問わず、リスト自体は汎用バケットに保存する必要があります。バッチオペレーションでは、既存のマニフェストをディレクトリバケットからインポートしたり、生成されたマニフェストをディレクトリバケットに保存したりすることはできません。ただし、マニフェスト内に記述されたオブジェクトはディレクトリバケットに保存できます。詳細については、「ディレクトリバケット」を参照してください。
-
マニフェスト内のオブジェクトがバージョニング対象のバケット内にある場合は、そのオブジェクトのバージョン ID を指定すると特定のバージョンに対してオペレーションが実行されます。バージョン ID が指定されていない場合、バッチオペレーションはオブジェクトの最新バージョンに対してオペレーションを実行します。マニフェストにバージョン ID フィールドが含まれている場合は、マニフェスト内にあるすべてのオブジェクトのバージョン ID を指定する必要があります。
詳細については、「マニフェストの指定」を参照してください。
-
- 優先度
-
ジョブの優先順位を使用して、自分のアカウントで実行中の他のユーザーに対するこのジョブの相対的な優先順位を示します。番号が大きいほど、優先度が高いことを表します。
ジョブの優先度は、同じアカウントとリージョンの他のジョブに設定された優先度に相対して解釈されます。お客様に合った番号付け体系を選択できます。例えば、すべての [復元] (
RestoreObject
) ジョブに優先度 1、すべての [コピー] (CopyObject
) ジョブに優先度 2、すべての [アクセスコントロールリスト (ACL) に置き換える] (PutObjectAcl
) ジョブに優先度 3 を割り当てることができます。S3 バッチオペレーションでは、優先度の数字に従ってジョブに優先順位が付けられます。ただし、厳密に順序付けされるとは限りません。そのため、いずれかのジョブをその他のジョブよりも前に開始または終了させるためにジョブの優先度は使用すべきではありません。厳密な順序付けする必要がある場合は、1 つのジョブが終了するまで待ってから次のジョブを開始します。
- RoleArn
-
ジョブを実行する AWS Identity and Access Management (IAM) ロールを指定します。使用する IAM ロールには、そのジョブで指定されているオペレーションを実行するための十分なアクセス許可が必要です。例えば、
CopyObject
ジョブを実行するには、IAM ロールに、ソースバケットに対するs3:GetObject
アクセス許可と、送信先バケットに対するs3:PutObject
アクセス許可が必要です。このロールには、マニフェストを読み取り、ジョブ完了レポートを書き込むためのアクセス許可も必要です。IAM ロールの詳細については、「IAM ユーザーガイド」の「IAM ロール」を参照してください。
Amazon S3 のアクセス許可の詳細については、「Amazon S3 のポリシーアクション」を参照してください。
注記
ディレクトリバケットに対してアクションを実行するバッチオペレーションジョブには、特定のアクセス許可が必要です。詳細については、S3 Express One Zone 向け AWS Identity and Access Management (IAM)」を参照してください。
- レポートを行う
-
S3 バッチ操作で完了レポートを生成するかどうかを指定します。ジョブ完了レポートをリクエストする場合、この要素にレポートのパラメータも指定する必要があります。必要な情報には以下が含まれます。
-
レポートを保存するバケット。
注記
レポートは汎用バケットに保存する必要があります。バッチオペレーションではレポートをディレクトリバケットに保存できません。詳細については、「ディレクトリバケット」を参照してください。
-
レポートの形式。
-
レポートに、すべてのタスクの詳細を含めるか、失敗したタスクのみを含めるかを指定します。
-
オプションのプレフィックス文字列
注記
完了レポートは、常に Amazon S3 マネージドキー (SSE-S3) によるサーバー側の暗号化で暗号化されます。
-
- [タグ (省略可能)]
-
タグを追加することで、S3 バッチ操作ジョブへのラベル付けとアクセスの制御を実行できます。タグを使用して、バッチオペレーションジョブの担当者を識別したり、ユーザーがバッチオペレーションジョブを操作する方法を制御したりできます。ジョブタグがあることで、ユーザーによるジョブのキャンセル、確認状態にあるジョブの有効化、ジョブの優先度レベルの変更を許可したり制限したりできます。例えば、ジョブが
"Department=Finance"
タグ付きで作成されている場合、CreateJob
オペレーションを呼び出すアクセス許可をユーザーに付与できます。タグをアタッチしてジョブを作成し、後でジョブにタグを追加できます。
詳細については、「タグを使用したアクセスのコントロールとジョブのラベル付け」を参照してください。
- Description (オプション)
-
ジョブを追跡および監視するために、最大 256 文字の説明を指定することもできます。Amazon S3 では、ジョブに関する情報を返すか、Amazon S3 コンソールにジョブの詳細を表示するたびに、この説明が含まれます。これによって、入力した説明に応じて簡単にジョブを並べ替えたりフィルタリングしたりできます。説明は一意である必要はないので、類似したジョブのグループを追跡するのに役立つように、説明をカテゴリとして使用することができます (「Weekly Log Copy Jobs」など)。
マニフェストの指定
マニフェストは、Amazon S3 が動作するオブジェクトキーを含む Amazon S3 オブジェクトです。次のいずれかの方法でマニフェストを提供できます。
-
新しいマニフェストファイルを手動で作成する。
-
既存のマニフェストを使用する。
-
直接バッチオペレーションでは、ジョブの作成時に指定したオブジェクトフィルター条件に基づいてマニフェストを自動的に生成します。このオプションは、Amazon S3 コンソールで作成したバッチレプリケーションジョブ、または AWS CLI、AWS、Amazon S3 REST API を使用して作成した任意のジョブタイプで使用できます。
注記
Amazon S3 バッチオペレーションは、クロスリージョンマニフェストの生成をサポートしていません。
マニフェストの指定方法を問わず、リスト自体は汎用バケットに保存する必要があります。バッチオペレーションでは、既存のマニフェストをディレクトリバケットからインポートしたり、生成されたマニフェストをディレクトリバケットに保存したりすることはできません。ただし、マニフェスト内に記述されたオブジェクトはディレクトリバケットに保存できます。詳細については、「ディレクトリバケット」を参照してください。
マニフェストファイルの作成
ジョブのマニフェストを手動で作成するには、マニフェストオブジェクトキー、ETag (エンティティタグ)、オプションでバージョン ID を CSV 形式のリストで指定します。マニフェストの内容は URL エンコードされている必要があります。
デフォルトでは、Amazon S3 は、Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側暗号化を自動的に使用して、Amazon S3 バケットにアップロードされるマニフェストを暗号化します。顧客指定のキーを使用したサーバー側の暗号化 (SSE-C) を使用するマニフェストはサポートされていません。AWS Key Management Service (AWS KMS) キー (SSE-KMS) でサーバー側の暗号化を使用するマニフェストは、CSV 形式のインベントリレポートを使用する場合にのみサポートされます。AWS KMS を使用したマニフェストの手動作成はサポートされていません。
マニフェストには、各オブジェクトのバケット名、オブジェクトキー、およびオプションでオブジェクトバージョンを含める必要があります。マニフェストのその他のフィールドは、S3 バッチ操作では使用されません。
注記
マニフェスト内のオブジェクトがバージョニング対象のバケット内にある場合は、そのオブジェクトのバージョン ID を指定すると特定のバージョンに対してオペレーションが実行されます。バージョン ID が指定されていない場合、バッチオペレーションはオブジェクトの最新バージョンに対してオペレーションを実行します。マニフェストにバージョン ID フィールドが含まれている場合は、マニフェスト内にあるすべてのオブジェクトのバージョン ID を指定する必要があります。
CSV 形式のマニフェスト(バージョン ID なし)の例を以下に示します。
amzn-s3-demo-bucket1,objectkey1
amzn-s3-demo-bucket1,objectkey2
amzn-s3-demo-bucket1,objectkey3
amzn-s3-demo-bucket1,photos/jpgs/objectkey4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5
amzn-s3-demo-bucket1,object%20key%20with%20spaces
バージョン ID を含む CSV 形式のマニフェストの例は次のとおりです。
amzn-s3-demo-bucket1,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p
amzn-s3-demo-bucket1,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF
amzn-s3-demo-bucket1,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI
amzn-s3-demo-bucket1,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs
amzn-s3-demo-bucket1,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w
既存のマニフェストファイルの指定
次の 2 つの形式のいずれかを使用して、ジョブ作成リクエストのマニフェストファイルを指定できます。
-
Amazon S3 インベントリレポート - CSV 形式の Amazon S3 インベントリレポートである必要があります。インベントリレポートに関連付けられた
manifest.json
ファイルを指定する必要があります。インベントリレポートの詳細については、「S3 インベントリを使用したデータのカタログ化と分析」を参照してください。インベントリレポートにバージョン ID が含まれている場合、S3 バッチ操作は特定のオブジェクトのバージョンに対して実行されます。注記
-
S3 バッチオペレーションは、SSE-KMS で暗号化された CSV インベントリレポートをサポートしています。
-
SSE-KMS で暗号化されたインベントリレポートマニフェストを送信する場合、IAM ポリシーには、
"kms:Decrypt"
、manifest.json
オブジェクトのための"kms:GenerateDataKey"
、関連するすべての CSV データ ファイルに対するアクセス許可が含まれている必要があります。
-
-
CSV ファイル – ファイルの各行には、バケット名とオブジェクトのキーを含める必要があります。また、任意でオブジェクトのバージョンを含めることができます。オブジェクトキーは、次の例に示されているように、URL エンコードする必要があります。マニフェストには、すべてのオブジェクトのバージョン ID を含めるか、すべてのオブジェクトのバージョン ID を省略する必要があります。CSV マニフェスト形式の詳細については、「Amazon Simple Storage Service API リファレンス」の「JobManifestSpec」を参照してください。.
注記
S3 バッチオペレーションは、SSE-KMS で暗号化された CSV マニフェストファイルをサポートしていません。
重要
手動で作成したマニフェストとバージョニング対応のバケットを使用する場合は、そのオブジェクトのバージョン ID を指定することをお勧めします。ジョブを作成すると、S3 バッチ操作はジョブを実行する前にマニフェスト全体を解析します。ただし、これによってバケットの状態は「スナップショット」されません。
マニフェストには数十億のオブジェクトが含まれる可能性があるため、ジョブの実行に時間がかかる可能性があり、その結果ジョブが動作するオブジェクトのバージョンに影響を与える場合があります。ジョブの実行中にオブジェクトを新しいバージョンで上書きして、そのオブジェクトのバージョン ID を指定しなかったとします。この場合、Amazon S3 は、ジョブの作成時に存在していたバージョンではなく、オブジェクトの最新バージョンに対してオペレーションを実行します。この動作を回避する唯一の方法は、マニフェスト内でリストされたオブジェクトにバージョン ID を指定することです。
マニフェストの自動的生成
ジョブの作成時に指定したオブジェクトフィルター条件に基づいてマニフェストを自動的に生成するように Amazon S3 に指示できます。このオプションは、Amazon S3 コンソールで作成したバッチレプリケーションジョブ、AWS CLI、AWS SDK、または Amazon S3 REST API を使用して作成した任意のジョブタイプで使用できます。バッチレプリケーションの詳細については、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。
マニフェストを自動的に生成するには、ジョブ作成リクエストの一環として次の要素を指定します。
-
バケット所有者や Amazon リソースネーム (ARN) など、ソースオブジェクトが含まれるバケットに関する情報
-
マニフェストファイルを作成するためのフラグ、出力バケット所有者、ARN、プレフィックス、ファイル形式、暗号化タイプなど、マニフェスト出力に関する情報
-
作成日、キー名、サイズ、ストレージクラスでオブジェクトをフィルタリングするためのオプションの条件 レプリケーションジョブの場合は、タグを使用してオブジェクトをフィルタリングすることもできます。
オブジェクトフィルターの条件
自動生成されたマニフェストに含まれるオブジェクトのリストをフィルタリングするには、次の条件を指定できます。詳細については、「Amazon S3 API リファレンス」の「JobManifestGeneratorFilter」を参照してください。
- CreatedAfter
-
指定した場合、生成されたマニフェストには、この時間以降に作成されたソースバケットオブジェクトのみが含まれます。
- CreatedBefore
-
指定した場合、生成されたマニフェストには、この時間以降に作成されたソースバケットオブジェクトのみが含まれます。
- EligibleForReplication
-
指定した場合、生成されたマニフェストには、ソースバケットのレプリケーション設定に従ってレプリケーションの対象となるオブジェクトのみが含まれます。
- KeyNameConstraint
-
指定された場合、生成されたマニフェストには、オブジェクトキーが MatchAnySubstring、MatchAnyPrefix、MatchAnySuffix に指定された文字列制約と一致するソースバケットオブジェクトのみが含まれます。
MatchAnySubstring – 指定した場合、指定された文字列がオブジェクトキー文字列内のいずれかの部分に出現する場合、生成されたマニフェストにそのオブジェクトが含まれます。
MatchAnyPrefix – 指定すると、指定された文字列がオブジェクトキー文字列の先頭に現れる場合、生成されたマニフェストにオブジェクトが含まれます。
MatchAnySuffix – 指定した場合、指定された文字列がオブジェクトキー文字列の末尾に出現する場合、生成されたマニフェストにオブジェクトが含まれます。
- MatchAnyStorageClass
-
指定した場合、生成されたマニフェストには、指定されたストレージクラスで保存されているソースバケットオブジェクトのみが含まれます。
- ObjectReplicationStatuses
-
指定した場合、生成されたマニフェストには、指定されたレプリケーションステータスのいずれかを持つソースバケットオブジェクトのみが含まれます。
- ObjectSizeGreaterThanBytes
-
指定した場合、生成されたマニフェストには、ファイルサイズが指定されたバイト数以上のソースバケットオブジェクトのみが含まれます。
- ObjectSizeLessThanBytes
-
指定した場合、生成されたマニフェストには、ファイルサイズが指定されたバイト数未満のソースバケット オブジェクトのみが含まれます。
注記
マニフェストが自動的に生成されたほとんどのジョブはクローンの作成はできません。バッチ レプリケーション ジョブはKeyNameConstraint
、MatchAnyStorageClass
、ObjectSizeGreaterThanBytes
、または ObjectSizeLessThanBytes
マニフェストフィルター条件を使用する場合を除き、クローンを作成できます。
マニフェスト条件を指定する構文は、ジョブの作成に使用する方法に応じて異なります。例については「ジョブの作成」を参照してください。
ジョブの作成
Amazon S3 コンソール、AWS CLI、AWS SDK、または Amazon S3 REST API を使用して S3 バッチオペレーションジョブを作成できます。
ジョブリクエストの作成の詳細については、バッチ操作ジョブのリクエストの要素 を参照してください。
前提条件
バッチオペレーションジョブを作成する前に、関連するアクセス許可が設定されていることを確認します。詳細については、「バッチオペレーションに対するアクセス許可の付与」を参照してください。
バッチジョブを作成するには
AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 -
ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、ジョブを作成するリージョンを選択します。
注記
コピーオペレーションの場合は、コピー先バケットと同じリージョンにジョブを作成する必要があります。その他すべてのオペレーションの場合は、マニフェスト内のオブジェクトと同じリージョンにジョブを作成する必要があります。
-
Amazon S3 コンソールのナビゲーションペインで [バッチオペレーション] を選択します。
-
[ジョブの作成] を選択します。
-
ジョブを作成する AWS リージョン を確認します。
-
[マニフェストの形式] で、使用するマニフェストオブジェクトのタイプを選択します。
-
[S3 inventory report (S3 インベントリレポート)] を選択する場合、CSV 形式のインベントリレポートの一部として Amazon S3 が生成する manifest.json オブジェクトへのパスと、最新のバージョンではなく特定のバージョンを使用する場合には、オプションでマニフェストオブジェクトのバージョン ID を入力します。
-
[CSV] を選択する場合は、CSV 形式のマニフェストオブジェクトへのパスを入力します。マニフェストオブジェクトは、コンソールで説明される形式に従う必要があります。最新のバージョンではなく特定のバージョンを使用する場合には、マニフェストオブジェクトのバージョン ID をオプションで含めることもできます。
注記
Amazon S3 コンソールは、バッチレプリケーションジョブのみの自動マニフェスト生成をサポートします。その他のすべてのジョブタイプで、指定したフィルタ条件に基づいて Amazon S3 がマニフェストを自動的に生成するようにするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用してジョブを設定する必要があります。
-
-
[次へ] を選択します。
-
[Operation (オペレーション)] で、マニフェストに登録されたすべてのオブジェクトを実行するオペレーションを選択します。選択したオペレーションに関する情報を入力して、[次へ] を選択します。
-
[追加オプションの設定] に関する情報を入力して、[次へ] を選択します。
-
[Review (確認)] で、設定を確認します。変更が必要な場合は、[戻る] を選択します。それ以外の場合は、[ジョブの作成] を選択します。
AWS CLI を使用してバッチオペレーションジョブを作成するには、既存のマニフェストを指定するか、マニフェストを自動的に生成するかに応じて、次のいずれかの例を選択します。
AWS SDK for Java を使用してバッチオペレーションジョブを作成するには、既存のマニフェストを指定するか、マニフェストを自動的に生成するかに応じて、次のいずれかの例を選択します。
REST API を使用して、バッチ操作ジョブを作成できます。詳細については、「Amazon Simple Storage Service API リファレンス」の「CreateJob」を参照してください。
ジョブのレスポンス
CreateJob
リクエストが成功すると、Amazon S3 はジョブ ID を返します。ジョブ ID は Amazon S3 が自動的に生成する一意の識別子であるため、バッチ操作ジョブを識別してそのステータスを監視できます。
AWS CLI、AWS SDK または REST API を介してジョブを作成する場合、S3 バッチオペレーションを設定してジョブを自動処理を開始できます。ジョブはより高い優先度のジョブを待機せずに、準備が整うと直ちに実行されます。
Amazon S3 コンソールを使用してジョブを作成する際は、バッチオペレーションでジョブの処理を開始する前に、ジョブの詳細を確認し、ジョブを実行できるかを確認する必要があります。ジョブが 30 日以上停止状態のままになると、失敗します。