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 請求とコスト管理ユーザーガイドの「ユーザー定義タグの制限」を参照してください。

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

Amazon S3 では、S3 バッチオペレーションジョブのタグ付けについて次の API オペレーションがサポートされています。

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

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

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

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

      注記

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

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

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

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

各ジョブには、数値の優先度 (任意の正の整数) を割り当てることができます。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 バッチオペレーションジョブを追跡する」を参照してください。