

# ジョブステータスと完了レポートの追跡
<a name="batch-ops-job-status"></a>

S3 バッチ操作を使用すると、ジョブステータスの表示と更新、通知とログの追加、ジョブの失敗の追跡、完了レポートの生成を行うことができます。

**Topics**
+ [ジョブステータス](#batch-ops-job-status-table)
+ [ジョブステータスの更新](#updating-job-statuses)
+ [通知とログ記録](#batch-ops-notifications)
+ [ジョブの失敗の追跡](#batch-ops-job-status-failure)
+ [完了レポート](#batch-ops-completion-report)
+ [例: を使用して Amazon EventBridge の S3 バッチ操作ジョブを追跡するAWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [例: S3 バッチ操作完了レポート](batch-ops-examples-reports.md)

## ジョブステータス
<a name="batch-ops-job-status-table"></a>

ジョブの作成および実行後、ジョブは一連のステータスを進行します。ステータスとその間のあり得る移行を次の表に示します。


| ステータス | 説明 | Transitions | 
| --- | --- | --- | 
| `New` | ジョブを作成すると、ジョブは `New` ステータスから始まります。 | Amazon S3 がマニフェストオブジェクトの処理を開始すると、ジョブは自動的に `Preparing` ステータスになります。 | 
| `Preparing` | Amazon S3 はマニフェストオブジェクトと他のジョブパラメータを処理してセットアップし、ジョブを実行します。 | Amazon S3 がマニフェストと他のパラメータの処理を終了すると、ジョブは自動的に `Ready` ステータスになります。その後、ジョブではマニフェストに一覧表示されているオブジェクトにおいて指定されたオペレーションの実行を開始する準備が整います。<br />ジョブで実行前に確認が必要な場合は (Amazon S3 コンソールを使用してジョブを作成した場合など)、ジョブは `Preparing` から `Suspended` に移行します。ジョブを実行することが確認されるまで、`Suspended` 状態のままになります。 | 
| `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` に戻ります。 | 
| `Completing` | ジョブは別の状態から `Complete` に移行しています。 | `Complete` ステージが完了すると、ジョブは自動的に `Completing` になります。 | 
| `Complete` | ジョブは、マニフェストのすべてのオブジェクトでリクエストされたオペレーションの実行を終了しました。このオペレーションは、すべてのオブジェクトで成功または失敗することがあります。完了レポートを生成するようにジョブを設定した場合、このレポートはジョブが `Complete` になるとすぐに利用可能になります。 | `Complete` は終了状態です。ジョブが `Complete` に達すると、他の状態に移行することはありません。 | 
| `Cancelling` | このジョブは `Cancelled` に移行しています。 | `Cancelled` ステージが完了すると、ジョブは自動的に `Cancelling` になります。 | 
| `Cancelled` | ユーザーはジョブのキャンセルをリクエストし、S3 バッチオペレーションはジョブのキャンセルに成功しました。このジョブは、Amazon S3 に新しいリクエストを送信しません。 | `Cancelled` は終了状態です。ジョブが `Cancelled` に達した後、他の状態には移行しません。 | 
| `Failing` | このジョブは `Failed` に移行しています。 | `Failed` ステージが完了すると、ジョブは自動的に `Failing` になります。 | 
| `Failed` | このジョブは失敗し、もう実行されていません。ジョブの失敗に関する詳細については、「[ジョブの失敗の追跡](#batch-ops-job-status-failure)」を参照してください。 | `Failed` は終了状態です。ジョブが `Failed` に達した後、他の状態には移行しません。 | 

## ジョブステータスの更新
<a name="updating-job-statuses"></a>

次の AWS CLI および AWS SDK for Java の例は、バッチオペレーションジョブのステータスを更新します。Amazon S3 コンソールを使用してバッチオペレーションジョブを管理する方法の詳細については、「[S3 バッチオペレーションジョブの管理に Simple Storage Service (Amazon S3) コンソールを使用する](batch-ops-managing-jobs.md#batch-ops-manage-console)」を参照してください。

### の使用AWS CLI
<a name="batch-ops-example-cli-update-job-status"></a>

次のコマンド例を使用する際は、{{`user input placeholders`}} をユーザー自身の情報に置き換えます。
+ 例えば、`--no-confirmation-required` のコマンドで `create-job` パラメータを指定しなかった場合、ジョブのステータスを `Ready` に設定してジョブを確定するまでこのジョブは停止状態になります。その後、Amazon S3 によってジョブが実行可能になります。

  ```
  aws s3control update-job-status \
      --region {{us-west-2}} \
      --account-id {{123456789012}} \
      --job-id {{00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c}} \
      --requested-job-status 'Ready'
  ```
+ ジョブステータスを `Cancelled` に設定して、ジョブをキャンセルします。

  ```
  aws s3control update-job-status \
       --region {{us-west-2}} \
       --account-id {{123456789012}} \
       --job-id {{00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c}} \
       --status-update-reason "{{No longer needed}}" \
       --requested-job-status Cancelled
  ```

### AWS SDK for Java の使用
<a name="batch-ops-examples-java-update-job-status"></a>

AWS SDK for Java を使用してジョブステータスを更新する方法の例については、「*Amazon S3 API リファレンス*」の「[Update the status of a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html)」を参照してください。

## 通知とログ記録
<a name="batch-ops-notifications"></a>

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

**注記**  
バッチオペレーションは、ジョブの実行中に CloudTrail で管理イベントとデータイベントの両方を生成します。これらのイベントの量は、各ジョブのマニフェスト内のキーの数に応じてスケールします。詳細については、「[CloudTrail の料金](https://aws.amazon.com/cloudtrail/pricing/)」ページを参照してください。このページには、アカウントで設定した証跡の数に応じて料金がどのように変わるのかを示す例が記載されています。ニーズに合わせてイベントを設定してログに記録する方法については、*AWS CloudTrail ユーザーガイド*の[最初の証跡の作成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html#tutorial-step2)を参照してください。

Amazon S3 イベントの詳細については、「[Amazon S3 イベント通知](EventNotifications.md)」を参照してください。

## ジョブの失敗の追跡
<a name="batch-ops-job-status-failure"></a>

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

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

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

## 完了レポート
<a name="batch-ops-completion-report"></a>

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

完了レポートには、ジョブ設定、ステータス、およびオブジェクトキーとバージョン、ステータス、エラーコード、およびエラーの説明を含む各タスクの情報が含まれます。完了レポートは、追加の設定を必要としない統合形式でタスクの結果を表示する簡単な方法です。完了レポートは、Amazon S3 マネージドキー (SSE-S3) によるサーバー側の暗号化を使用して暗号化されます。完了レポートの例については、「[例: S3 バッチ操作完了レポート](batch-ops-examples-reports.md)」を参照してください。

完了レポートを設定していない場合でも、CloudTrail および Amazon CloudWatch を使用して、ジョブとそのタスクをモニタリングして監査できます。詳細については、以下の各トピックを参照してください。

**Topics**
+ [ジョブステータス](#batch-ops-job-status-table)
+ [ジョブステータスの更新](#updating-job-statuses)
+ [通知とログ記録](#batch-ops-notifications)
+ [ジョブの失敗の追跡](#batch-ops-job-status-failure)
+ [完了レポート](#batch-ops-completion-report)
+ [例: を使用して Amazon EventBridge の S3 バッチ操作ジョブを追跡するAWS CloudTrail](batch-ops-examples-event-bridge-cloud-trail.md)
+ [例: S3 バッチ操作完了レポート](batch-ops-examples-reports.md)