S3 バッチオペレーション ジョブの管理 - Amazon Simple Storage Service

S3 バッチオペレーション ジョブの管理

Amazon S3 は、作成した バッチオペレーション ジョブを管理するための堅牢なツールのセットを提供します。このセクションでは、ジョブの管理に使用できるオペレーションについて説明します。このセクションに一覧表示されているすべてのオペレーションは、AWS マネジメントコンソール、AWS CLI、AWS SDK、または REST API を使用して実行できます。

以下のビデオでは、Amazon S3 コンソールを使用して S3 バッチオペレーション ジョブを管理する方法について簡単に説明しています。

ジョブのリスト取得

S3 バッチオペレーション ジョブのリストを取得できます。このリストには、まだ終了していないジョブと 90 日以内に終了したばかりのジョブが含まれます。ジョブリストには、ID、説明、優先度、現在のステータス、および成功したタスクと失敗したタスクの数など、各ジョブに関する情報が含まれています。ジョブのリストをステータスでフィルタリングできます。コンソールからジョブリストを取得するときに、説明または ID でジョブを検索して AWS リージョン別にフィルタリングすることもできます。

ジョブの詳細の表示

ジョブを一覧表示することで取得できるよりも多くのジョブの情報が必要な場合、単一のジョブのすべての詳細を表示できます。ジョブリストで返される情報に加えて、単一のジョブの詳細には他の項目が含まれています。この情報には、オペレーションパラメータ、マニフェストの詳細、完了レポートの情報 (ジョブの作成時に作成した場合)、ジョブの実行に割り当てたユーザーロールの Amazon リソースネーム (ARN) などの項目が含まれます。個々のジョブの詳細を表示することで、そのジョブの設定全体にアクセスできます。

タグを使用したアクセスのコントロールとジョブのラベル付け

タグを追加することで、S3 バッチオペレーション ジョブにラベルを付けて、ジョブへのアクセスをコントロールできます。タグは、バッチオペレーション ジョブの責任者の識別に使用できます。ジョブタグがあることで、ユーザーによるジョブのキャンセル、確認状態にあるジョブの有効化、ジョブの優先度レベルの変更を許可したり制限したりできます。タグをアタッチしてジョブを作成し、後でジョブにタグを追加できます。各タグはキーと値のペアであり、ジョブの作成時に追加することも、後で更新することもできます。

警告

ジョブタグには機密情報や個人データを含めないでください。

以下のタグ付けの例を考えてみます。経理部門に バッチオペレーション ジョブを作成するとします。AWS Identity and Access Management (IAM) ポリシーを作成して、Department タグに値 Finance を割り当ててジョブを作成する場合に、ユーザーに CreateJob の呼び出しを許可します。さらに、財務部門のメンバーであるすべてのユーザーにそのポリシーをアタッチできます。

この例を進めて、ユーザーに、必要なタグの付いたジョブの優先度を更新することを許可するポリシーや、それらのタグの付いたジョブをキャンセルすることを許可するポリシーを作成できます。詳細については、「例: ジョブタグを使用して S3 バッチオペレーション のアクセス許可をコントロールする」を参照してください。

タグは、新しい S3 バッチオペレーション ジョブの作成時に追加することも、既存のジョブに追加することもできます。

タグには以下の制限があります。

  • タグキーが一意である限り、最大 50 個のタグをジョブに関連付けることができます。

  • タグキーには最大 128 個の Unicode 文字、タグ値には最大 256 個の Unicode 文字を使用できます。

  • キーと値は大文字と小文字が区別されます。

タグの制限の詳細については、AWS Billing and Cost Management ユーザーガイドの「ユーザー定義タグの制限」を参照してください。

S3 バッチオペレーション ジョブのタグ付けに関連する API オペレーション。

Amazon S3 は、S3 バッチオペレーション ジョブのタグ付けに固有の以下の API オペレーションをサポートしています。

  • GetJobTagging—バッチオペレーション ジョブに関連付けられたタグのセットを返します。

  • PutJobTagging—ジョブに関連付けられたタグのセットを置き換えます。この API アクションを使用した S3 バッチオペレーション ジョブタグの管理には、2 つの異なるシナリオがあります。

    • ジョブにタグがない—ジョブに一連のタグを追加できます (ジョブに以前のタグがない)。

    • ジョブに既存のタグのセットがある—既存のタグのセットを変更するには、既存のタグのセット全体を置き換えます。または、GetJobTagging により既存のタグのセットを取得し、そのタグのセットに変更を加えて、この API アクションにより既存のタグのセットを、変更したタグのセットに置き換えます。

      注記

      タグセットを空にしてこのリクエストを送信すると、S3 バッチオペレーション によってオブジェクトの既存のタグセットが削除されます。この方法を使用する場合は、階層 1 リクエスト (PUT) に対して料金が発生します。詳細については、「Amazon S3 料金表」を参照してください。

      バッチオペレーション ジョブの既存のタグを削除するには、DeleteJobTagging アクションをお勧めします。このアクションでは、料金が発生せずに同じ結果が得られるためです。

  • DeleteJobTagging—バッチオペレーション ジョブに関連付けられたタグのセットを削除します。

ジョブの優先度の割り当て

各ジョブに優先度を数値で割り当てることができます。この数値は正の整数が使用できます。S3 バッチオペレーション は、割り当てられた優先度に従ってジョブに優先順位を付けます。優先度が高いジョブ (または、優先パラメータの数値が高いジョブ) ほど先に処理されます。優先度は降順に決定されます。たとえば、優先度の値が 10 のジョブキューは、優先度の値が 1 のジョブキューより先にスケジュールされます。

ジョブの実行中にこのジョブの優先順位を変更できます。また、ジョブの実行中に優先順位が高い新しいジョブを送信すると、優先順位の低いジョブが一時停止して優先順位の高いジョブが実行される可能性があります。

注記

S3 バッチオペレーション はベストエフォートベースでジョブの優先度を重視します。優先順位の高いジョブは優先順位の低いジョブより優先されるのが一般的ですが、Amazon S3 はジョブの厳密な順序付けを保証しません。

ジョブステータス

ジョブの作成後、ジョブは一連のステータスを進行します。次のテーブルでは、ジョブが持つことのできるステータスおよびジョブステータス間の可能な移行について説明しています。

ステータス 説明 Transitions
New ジョブを作成すると、ジョブは New ステータスから始まります。 Amazon S3 がマニフェストオブジェクトの処理を開始すると、ジョブは自動的に Preparing ステータスになります。
Preparing Amazon S3 はマニフェストオブジェクトと他のジョブパラメータを処理してセットアップし、ジョブを実行します。 Amazon S3 がマニフェストと他のパラメータの処理を終了すると、ジョブは自動的に Ready ステータスになります。マニフェストに一覧表示されているオブジェクトにおいて指定されたオペレーションの実行を開始する準備が整いました。

ジョブで実行前に確認が必要な場合は (Amazon S3 コンソールを使用してジョブを作成した場合など)、ジョブは Preparing から Suspended に移行します。ジョブを実行することが確認されるまで、Suspended 状態のままになります。

Suspended ジョブには確認が必要ですが、ジョブを実行したいことをまだ確認していません。Amazon S3 コンソールを使用して作成したジョブのみ確認が必要になります。コンソールを使用して作成したジョブは、Preparing 後にすぐ Suspended 状態になります。ジョブを実行したいことを確認すると、このジョブは Ready になり、Suspended 状態に戻ることはありません。 ジョブを実行したいことを確認すると、そのステータスは Ready に変更します。
Ready Amazon S3 はリクエストしたオブジェクトオペレーションの実行を開始する準備ができました。 Amazon S3 がジョブを開始すると、ジョブは自動的に Active ステータスになります。ジョブが Ready 状態のままになる期間は、優先度の高いジョブをすでに実行中であるかどうか、またそのジョブが完了するまでの時間に応じます。
Active Amazon S3 はマニフェストで一覧表示されているオブジェクトでリクエストされたオペレーションを実行しています。ジョブが Active の間、Amazon S3 コンソール、あるいは REST API、AWS CLI、または AWS SDK の DescribeJob オペレーションを使用してその進捗状況を監視できます。 ジョブがオブジェクトでオペレーションを実行しなくなると、ジョブは Active 状態ではなくなります。ジョブが成功して完了したか失敗した場合などに、これが自動的に起こります。あるいは、ジョブのキャンセルなどのユーザーアクションの結果としても生じます。ジョブが移行する状態は、移行の理由によって異なります。
Pausing ジョブは別の状態から Paused に移行しています。 Pausing ステージが完了すると、ジョブは自動的に Paused になります。
Paused ジョブを現在実行中に優先度の高い別のジョブを送信すると、ジョブは Paused になります。 ジョブの実行が完了、失敗、あるいは停止になることを阻止している優先度の高いジョブの後、Paused ジョブは自動的に Active に戻ります。
Complete ジョブは、マニフェストのすべてのオブジェクトでリクエストされたオペレーションの実行を終了しました。このオペレーションは、各オブジェクトで成功あるいは失敗することがあります。完了レポートを生成するようにジョブを設定した場合、このレポートはジョブが Complete になるとすぐに利用可能になります。 Complete は終了状態です。ジョブが Complete に達すると、他の状態に移行することはありません。
Cancelling このジョブは Cancelled に移行しています。 Cancelling ステージが完了すると、ジョブは自動的に Cancelled になります。
Cancelled ユーザーはジョブのキャンセルをリクエストし、S3 バッチオペレーション はジョブのキャンセルに成功しました。このジョブは、Amazon S3 に新しいリクエストを送信しません。 Cancelled は終了状態です。ジョブが Cancelled に達した後、他の状態には移行しません。
Failing このジョブは Failed に移行しています。 Failing ステージが完了すると、ジョブは自動的に Failed になります。
Failed このジョブは失敗し、もう実行されていません。ジョブの失敗に関する詳細については、「ジョブの失敗の追跡」を参照してください。 Failed は終了状態です。ジョブが Failed に達した後、他の状態には移行しません。

ジョブの失敗の追跡

指定されたマニフェストを読み取れないなど、S3 バッチオペレーション ジョブが正常に実行できない問題が発生した場合、そのジョブは失敗します。ジョブが失敗すると、1 つ以上の障害コードまたは失敗の理由が生成されます。S3 バッチオペレーション は、ジョブの詳細をリクエストしてそれらを表示できるように、障害コードと理由をジョブとともに保存します。ジョブの完了レポートをリクエストした場合は、そこに障害コードと理由も表示されます。

ジョブが大量の失敗したオペレーションを実行するのを防ぐために、Amazon S3 はすべての バッチオペレーション ジョブにタスク失敗のしきい値を設定します。ジョブが 1000 個以上のタスクを実行すると、Amazon S3 はタスクの失敗率を監視します。いずれかの時点で、失敗率 (実行されたタスクの総数に対する失敗したタスクの数の割合) が 50 パーセントを超えると、そのジョブは失敗します。タスク失敗しきい値を超えたためにジョブが失敗した場合、この失敗の原因を識別できます。たとえば、特定のバケットに存在しないいくつかのオブジェクトを誤ってマニフェストに含めてしまうことがあります。誤りを訂正したら、ジョブを再送信できます。

注記

S3 バッチオペレーション は非同期的に作動するため、タスクはマニフェストにリストされるオブジェクトの順序で実行する必要はありません。つまり、どのオブジェクトのタスクが成功して、どれが失敗したかを判断するためにマニフェストの順序を使用することはできません。代わりに、ジョブの完了レポート (リクエストした場合) を調べるか、AWS CloudTrail イベントログを表示して失敗の原因を特定することができます。

通知とログ記録

完了レポートをリクエストすることに加えて、AWS CloudTrail を使用して バッチオペレーション のアクティビティをキャプチャ、確認、および監査することもできます。バッチオペレーション は既存の Amazon S3 API を使用してタスクを実行するため、それらのタスクも直接呼び出した場合と同じイベントを出力します。したがって、Amazon S3 で既に使用しているのと同じ通知、ログ記録、および監査ツールとプロセスを使用して、ジョブの進捗状況とジョブのすべてのタスクを追跡および記録することができます。

Amazon S3 イベントの詳細については、「 Amazon S3 イベント通知の設定」を参照してください。

完了レポート

ジョブを作成するときに、完了レポートをリクエストできます。S3 バッチオペレーション が少なくとも 1 つのタスクを正常に呼び出す限り、タスクの実行が完了した後、失敗したとき、またはキャンセルされたときに、Amazon S3 は完了レポートを生成します。完了レポートに、すべてのタスクを含めるか、失敗したタスクのみを含めるかを設定できます。

完了レポートには、ジョブ設定とステータス、およびオブジェクトキーとバージョン、ステータス、エラーコード、およびエラーの説明を含む各タスクの情報が含まれます。完了レポートは、追加の設定を必要としない統合形式でタスクの結果を表示する簡単な方法です。完了レポートの例については、「例: S3 バッチオペレーション 完了レポートのリクエスト」を参照してください。

完了レポートを設定していない場合でも、CloudTrail および Amazon CloudWatch を使用して、ジョブとそのタスクをモニタリングして監査できます。詳細については、「例: AWS CloudTrail により Amazon EventBridge で S3 バッチオペレーション ジョブを追跡する」を参照してください。