ジョブステータスと完了レポートの追跡
S3 バッチ操作を使用すると、ジョブステータスの表示と更新、通知とログの追加、ジョブの失敗の追跡、完了レポートの生成を行うことができます。
トピック
ジョブステータス
ジョブの作成および実行後、ジョブは一連のステータスを進行します。ステータスとその間のあり得る移行を次の表に示します。
ステータス | 説明 | Transitions |
---|---|---|
New |
ジョブを作成すると、ジョブは New ステータスから始まります。 |
Amazon S3 がマニフェストオブジェクトの処理を開始すると、ジョブは自動的に Preparing ステータスになります。 |
Preparing |
Amazon S3 はマニフェストオブジェクトと他のジョブパラメータを処理してセットアップし、ジョブを実行します。 | Amazon S3 がマニフェストと他のパラメータの処理を終了すると、ジョブは自動的に Ready ステータスになります。その後、ジョブではマニフェストに一覧表示されているオブジェクトにおいて指定されたオペレーションの実行を開始する準備が整います。ジョブで実行前に確認が必要な場合は (Amazon S3 コンソールを使用してジョブを作成した場合など)、ジョブは |
Suspended |
ジョブには確認が必要ですが、ジョブを実行することをまだ確認していません。Amazon S3 コンソールを使用して作成したジョブのみ確認が必要になります。コンソールを使用して作成したジョブは、Suspended 後にすぐ Preparing 状態になります。ジョブを実行したいことを確認すると、このジョブは 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 に移行しています。 |
Paused ステージが完了すると、ジョブは自動的に Pausing になります。 |
Paused |
ジョブを現在実行中に優先度の高い別のジョブを送信すると、ジョブは Paused になります。 |
ジョブの実行が完了、失敗、あるいは停止になることを阻止している優先度の高いジョブの後、Paused ジョブは自動的に Active に戻ります。 |
Complete |
ジョブは、マニフェストのすべてのオブジェクトでリクエストされたオペレーションの実行を終了しました。このオペレーションは、すべてのオブジェクトで成功または失敗することがあります。完了レポートを生成するようにジョブを設定した場合、このレポートはジョブが Complete になるとすぐに利用可能になります。 |
Complete は終了状態です。ジョブが Complete に達すると、他の状態に移行することはありません。 |
Cancelling |
このジョブは Cancelled に移行しています。 |
Cancelled ステージが完了すると、ジョブは自動的に Cancelling になります。 |
Cancelled |
ユーザーはジョブのキャンセルをリクエストし、S3 バッチオペレーションはジョブのキャンセルに成功しました。このジョブは、Amazon S3 に新しいリクエストを送信しません。 | Cancelled は終了状態です。ジョブが Cancelled に達した後、他の状態には移行しません。 |
Failing |
このジョブは Failed に移行しています。 |
Failed ステージが完了すると、ジョブは自動的に Failing になります。 |
Failed |
このジョブは失敗し、もう実行されていません。ジョブの失敗に関する詳細については、「ジョブの失敗の追跡」を参照してください。 | Failed は終了状態です。ジョブが Failed に達した後、他の状態には移行しません。 |
ジョブステータスの更新
次の AWS CLI および AWS SDK for Java の例は、バッチオペレーションジョブのステータスを更新します。Amazon S3 コンソールを使用してバッチオペレーションジョブを管理する方法の詳細については、「S3 バッチオペレーションジョブの管理に Simple Storage Service (Amazon S3) コンソールを使用する」を参照してください。
次のコマンド例を使用する際は、
をユーザー自身の情報に置き換えます。user input
placeholders
-
例えば、
--no-confirmation-required
のコマンドでcreate-job
パラメータを指定しなかった場合、ジョブのステータスをReady
に設定してジョブを確定するまでこのジョブは停止状態になります。その後、Amazon S3 によってジョブが実行可能になります。aws s3control update-job-status \ --region
us-west-2
\ --account-id123456789012
\ --job-id00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
\ --requested-job-status 'Ready' -
ジョブステータスを
Cancelled
に設定して、ジョブをキャンセルします。aws s3control update-job-status \ --region
us-west-2
\ --account-id123456789012
\ --job-id00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
\ --status-update-reason "No longer needed
" \ --requested-job-status Cancelled
次の例では、AWS SDK for Java を使用して S3 バッチオペレーションジョブのステータスを更新します。
ジョブのステータスの詳細については、「ジョブステータスと完了レポートの追跡」を参照してください。
package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.UpdateJobStatusRequest; import static com.amazonaws.regions.Regions.US_WEST_2; public class UpdateJobStatus { public static void main(String[] args) { String accountId = "Account ID"; String jobId = "00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c"; try { AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.updateJobStatus(new UpdateJobStatusRequest() .withAccountId(accountId) .withJobId(jobId) .withRequestedJobStatus("Ready")); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
通知とログ記録
完了レポートをリクエストすることに加えて、AWS CloudTrail を使用してバッチオペレーションのアクティビティをキャプチャ、確認、および監査することもできます。バッチオペレーションは既存の Amazon S3 API オペレーションを使用してタスクを実行するため、それらのタスクも直接呼び出した場合と同じイベントを出力します。したがって、Amazon S3 で既に使用しているのと同じ通知、ログ記録、および監査ツールとプロセスを使用することで、ジョブの進捗状況とジョブのすべてのタスクを追跡および記録することができます。詳細については、次のセクションの例を参照してください。
注記
バッチオペレーションは、ジョブの実行中に CloudTrail で管理イベントとデータイベントの両方を生成します。これらのイベントの量は、各ジョブのマニフェスト内のキーの数に応じてスケールします。詳細については、「CloudTrail の料金
Amazon S3 イベントの詳細については、「Amazon S3 イベント通知」を参照してください。
ジョブの失敗の追跡
指定されたマニフェストを読み取れないなど、S3 バッチ操作が正常に実行できない問題が発生した場合、そのジョブは失敗します。ジョブが失敗すると、1 つ以上の障害コードまたは失敗の理由が生成されます。S3 バッチオペレーションは、ジョブの詳細をリクエストしてそれらを表示できるように、障害コードと理由をジョブとともに保存します。ジョブの完了レポートをリクエストした場合は、そこに障害コードと理由も表示されます。
ジョブが大量の失敗したオペレーションを実行するのを防ぐために、Amazon S3 はすべてのバッチ操作ジョブにタスク失敗のしきい値を設定します。ジョブが 1,000 個以上のタスクを実行すると、Amazon S3 はタスクの失敗率を監視します。いずれかの時点で、失敗率 (実行されたタスクの総数に対する失敗したタスクの数の割合) が 50 パーセントを超えると、そのジョブは失敗します。タスク失敗しきい値を超えたためにジョブが失敗した場合、この失敗の原因を識別できます。たとえば、特定のバケットに存在しないいくつかのオブジェクトを誤ってマニフェストに含めてしまうことがあります。誤りを訂正したら、ジョブを再送信できます。
注記
S3 バッチオペレーションは非同期で動作するため、タスクはマニフェストにリストされているオブジェクトの順序で実行する必要はありません。つまり、どのオブジェクトのタスクが成功して、どれが失敗したかを判断するためにマニフェストの順序を使用することはできません。代わりに、ジョブの完了レポート (リクエストした場合) を調べるか、AWS CloudTrail イベントログを表示して失敗の原因を特定することができます。
完了レポート
ジョブを作成するときに、完了レポートをリクエストできます。S3 バッチオペレーションが少なくとも 1 つのタスクを正常に呼び出す限り、ジョブでタスクの実行が完了した後、失敗したとき、またはキャンセルされたときに、Amazon S3 は完了レポートを生成します。完了レポートに、すべてのタスクを含めるか、失敗したタスクのみを含めるかを設定できます。
完了レポートには、ジョブ設定、ステータス、およびオブジェクトキーとバージョン、ステータス、エラーコード、およびエラーの説明を含む各タスクの情報が含まれます。完了レポートは、追加の設定を必要としない統合形式でタスクの結果を表示する簡単な方法です。完了レポートは、Amazon S3 マネージドキー (SSE-S3) によるサーバー側の暗号化を使用して暗号化されます。完了レポートの例については、「例: S3 バッチ操作完了レポート」を参照してください。
完了レポートを設定していない場合でも、CloudTrail および Amazon CloudWatch を使用して、ジョブとそのタスクをモニタリングして監査できます。詳細については、以下の各トピックを参照してください。