

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 追蹤任務狀態和完成報告
<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>

建立和執行任務後，該任務會根據進度顯示一系列狀態。下表說明狀態和可能的轉換。


| 狀態 | 描述 | 轉換 | 
| --- | --- | --- | 
| `New` | 建立任務時，任務的起始狀態為 `New`。 | 當 Amazon S3 開始處理資訊清單物件時，任務會自動進入 `Preparing` 狀態。 | 
| `Preparing` | Amazon S3 正在處理資訊清單物件和其他任務參數，以設定並執行任務。 | 當 Amazon S3 完成處理資料清單和其他參數後，任務會自動變成 `Ready` 狀態。作業接著會準備開始對資訊清單中列出的物件執行指定操作。<br />如果任務在執行前需要確認，例如當您使用 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 SDKs `DescribeJob`監控其進度。 | 當作業不再對物件執行操作時，作業將移出 `Active` 狀態。此行為可能會自動發生，例如當作業成功完成或失敗時。此行為也可能是使用者動作 (例如取消作業) 的結果。任務移至的狀態依轉換原因而定。 | 
| `Pausing` | 任務正在從其他狀態轉換為 `Paused`。 | 當 `Paused` 階段結束時，任務將自動移到 `Pausing` 狀態。 | 
| `Paused` | 如果在目前任務執行時提交優先順序更高的其他任務，該任務會變更為 `Paused` 狀態。 | 當有任何優先順序較高的任務，使 `Paused` 任務執行無法完成、失敗，或遭到暫停時，該任務將自動返回 `Active` 狀態。 | 
| `Completing` | 任務正在從其他狀態轉換為 `Complete`。 | 當 `Complete` 階段結束時，任務將自動移到 `Completing` 狀態。 | 
| `Complete` | 任務已完成對資訊清單中所有物件執行的請求操作。每個物件的操作可能成功或失敗。如果您已設定任務以產生完成報告，則當任務為 `Complete` 時，系統就會立即提供報告。 | `Complete` 是最終狀態。一旦作業達到 `Complete`，便不會轉換到任何其他狀態。 | 
| `Cancelling` | 任務正在轉換為 `Cancelled` 狀態。 | 當 `Cancelled` 階段結束時，任務將自動移到 `Cancelling` 狀態。 | 
| `Cancelled` | 您已請求取消作業，且 S3 Batch Operations 已成功取消作業。作業不會向 Amazon S3 提交任何新請求。 | `Cancelled` 是最終狀態。任務達到 `Cancelled` 之後，便不會轉換到任何其他狀態。 | 
| `Failing` | 任務正在轉換為 `Failed` 狀態。 | 當 `Failed` 階段結束時，任務將自動移到 `Failing` 狀態。 | 
| `Failed` | 任務已失敗，不再繼續執行。如需任務失敗的詳細資訊，請參閱[追蹤作業失敗](#batch-ops-job-status-failure)。 | `Failed` 是最終狀態。任務達到 `Failed` 之後，便不會轉換到任何其他狀態。 | 

## 更新任務狀態
<a name="updating-job-statuses"></a>

下列 AWS CLI 和 適用於 Java 的 AWS SDK 範例會更新批次操作任務的狀態。如需使用 Amazon S3 主控台管理 Batch Operations 作業的詳細資訊，請參閱[使用 Amazon S3 主控台管理您的 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`}}。
+ 如果您在 `create-job` 命令中未指定 `--no-confirmation-required` 參數，作業會保持暫停狀態，直到您將狀態設定為 `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
  ```

### 使用適用於 Java 的 AWS 開發套件
<a name="batch-ops-examples-java-update-job-status"></a>

如需如何使用適用於 Java 的 AWS SDK 更新任務狀態的範例，請參閱《*Amazon S3 API 參考*》中的[更新批次任務的狀態](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html)。

## 通知和記錄日誌
<a name="batch-ops-notifications"></a>

除了請求完成報告之外，您還可以使用 AWS CloudTrail來擷取、檢閱和稽核 Batch Operations 活動。由於 Batch Operations 會使用現有的 Amazon S3 API 操作來執行任務，因此這些任務也會發出與您直接呼叫時的相同事件。因此，您可以使用您已運用在 Amazon S3 的相同通知、記錄及稽核工具和程序，追蹤和記錄作業及其所有任務的進度。如需詳細資訊，請參閱下列段落中的範例。

**注意**  
Batch Operations 會在作業執行期間，於 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 批次作業任務發生問題而無法成功執行 (例如無法讀取指定的資訊清單)，任務便會失敗。任務失敗時會產生一個或多個失敗代碼或失敗原因。S3 Batch Operations 會將失敗代碼和原因連同作業一起儲存，以便您可以請求作業的詳細資訊來檢視。若您請求任務的完成報告，即會在該處顯示故障代碼和原因。

為了防止任務執行大量的失敗操作，Amazon S3 會對每個批次作業任務施加任務失敗閾值。當一個作業執行至少 1,000 個任務時，Amazon S3 會監控任務失敗率。若在任何一個時間點，失敗率 (失敗的任務數，以相對於已執行任務總數的比例呈現) 超過 50%，任務便會失敗。如果您的任務因超出任務失敗閾值而失敗，您可以判定失敗的原因。例如，您可能不小心在資訊清單中包含了一些在指定儲存貯體中不存在的物件。修復錯誤後，您可以重新提交任務。

**注意**  
S3 Batch Operations 以非同步方式運作，任務不一定按照資訊清單列出物件的順序執行。因此，您無法使用資訊清單排序來確定哪些物件的任務成功，以及哪些物件的任務失敗。反之，您可以檢查任務的完成報告 （如果您請求） 或檢視您的 AWS CloudTrail 事件日誌，以協助判斷失敗的來源。

## 完成報告
<a name="batch-ops-completion-report"></a>

當您建立任務時，您可以請求完成報告。只要 S3 Batch Operations 成功調用至少一個任務，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)