追蹤任務狀態和完成報告 - Amazon Simple Storage Service

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

追蹤任務狀態和完成報告

使用 S3 批次操作,您可以檢視和更新任務狀態、新增通知和日誌記錄、追蹤任務失敗狀況,以及產生完成報告。

任務狀態

建立和執行任務後,該任務會根據進度顯示一系列狀態。下表描述狀態及其之間可能的轉換。

狀態 描述 轉換
New 建立任務時,任務的起始狀態為 New 當 Amazon S3 開始處理資訊清單物件時,任務會自動進入 Preparing 狀態。
Preparing Amazon S3 正在處理資訊清單物件和其他任務參數,以設定並執行任務。 當 Amazon S3 完成處理資料清單和其他參數後,任務會自動變成 Ready 狀態。然後,任務便可開始對資訊清單中列出的物件執行指定操作。

如果任務在執行前需要確認,例如當您使用 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 狀態。
Complete 任務已完成對資訊清單中所有物件執行的請求操作。每個物件的操作可能成功或失敗。如果您已設定任務以產生完成報告,則當任務為 Complete 時,系統就會立即提供報告。 Complete 是最終狀態。一旦任務達到 Complete,便不會轉換到任何其他狀態。
Cancelling 任務正在轉換為 Cancelled 狀態。 Cancelled 階段結束時,任務將自動移到 Cancelling 狀態。
Cancelled 您已請求取消任務,且 S3 批次操作已成功取消任務。該任務不會向 Amazon S3 提交任何新請求。 Cancelled 是最終狀態。任務達到 Cancelled 後,便不會轉換到任何其他狀態。
Failing 任務正在轉換為 Failed 狀態。 Failed 階段結束時,任務將自動移到 Failing 狀態。
Failed 任務已失敗,不再繼續執行。如需任務失敗的詳細資訊,請參閱追蹤任務失敗 Failed 是最終狀態。任務達到 Failed 後,便不會轉換到任何其他狀態。

更新任務狀態

下列適用於 Java 的 AWS CLI 和 SDK 的範例會更新批次操作任務的狀態。如需使用 S3 主控台管理批次操作任務的詳細資訊,請參閱「使用 Amazon S3 主控台管理您的 S3 批次操作任務」。

  • 如果您在先前的 --no-confirmation-required 範例中未指定 create-job 參數,任務會保持暫停狀態,直到您將狀態設定為 Ready 以確認任務為止。然後 Amazon S3 會使該任務符合執行資格。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --requested-job-status 'Ready'

  • 將任務狀態設定為 Cancelled 來取消任務。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-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 的相同通知、日誌記錄及稽核工具和程序,以追蹤和記錄任務及其所有工作的進度。如需詳細資訊,請參閱下列段落中的範例。

注意

Amazon S3 批次操作會在任務執行期間,在 CloudTrail 中產生管理和資料事件。這些事件的磁碟區會隨著每個任務資訊清單中的金鑰數目來調整。如需詳細資訊,請參閱 CloudTrail 定價頁面,其中包含定價如何根據您帳戶中設定的追蹤數目而變化的範例。若要了解如何設定和記錄事件以符合您的需求,請參閱《AWS CloudTrail 使用者指南》中的建立您的第一個追蹤

如需 Amazon S3 事件的詳細資訊,請參閱Amazon S3 事件通知

追蹤任務失敗

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

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

注意

S3 批次作業以非同步方式運作,工作不一定按照資訊清單列出物件的順序執行。因此,您無法使用資訊清單排序來確定哪些物件的任務成功,以及哪些物件的任務失敗。您可以改為檢查任務的完成報告 (若您有請求的話),或是檢視您的 AWS CloudTrail 事件日誌來協助判斷故障的來源。

完成報告

當您建立任務時,您可以請求完成報告。只要 S3 批次作業成功呼叫至少一個工作,Amazon S3 便會在完成執行工作、失敗或取消後產生完成報告。您可以設定完成報告來包含所有任務或僅限失敗的任務。

完成報告包含任務組態,以及每個任務的狀態和資訊,包含物件鍵和版本、狀態、錯誤代碼,以及任何錯誤的描述。完成報告可讓您以合併形式輕鬆檢視任務結果,無需進行額外設定。如需完成報告的範例,請參閱範例:S3 批次操作完成報告

如果您未設定完成報告,您仍然可以使用 CloudTrail 和 Amazon CloudWatch 來監控和稽核任務及其任務。如需詳細資訊,請參閱下一節。