跟踪任务状态和完成报告
借助 S3 分批操作,您可以查看和更新任务状态、添加通知和日志记录、跟踪任务失败以及生成完成报告。
主题
任务状态
在您创建和运行任务之后,该任务会逐步经过一系列状态。下表描述了状态以及状态之间可能的转换。
| 状态 | 说明 | 转换 | 
|---|---|---|
| New | 在您创建任务时,任务首先处于 New状态。 | Amazon S3 开始处理清单对象时,任务自动转入 Preparing状态。 | 
| Preparing | Amazon S3 正在处理清单对象及其他任务参数,以设置和运行任务。 | Amazon S3 完成清单和其他参数的处理之后,任务自动转入 Ready状态。然后,任务随时可以在清单中列出的对象上开始运行指定的操作。如果任务要求在运行之前确认,就像您在使用 Amazon S3 控制台创建任务时那样,则任务从  | 
| Suspended | 任务需要确认,但您尚未确认您想要运行该任务。只有使用 Amazon S3 控制台创建的任务需要确认。使用控制台创建的任务在 Preparing之后立即进入Suspended状态。在您确认希望运行任务并且任务成为Ready状态之后,它不会再返回Suspended状态。 | 在您确认希望运行任务之后,其状态将更改为 Ready。 | 
| Ready | Amazon S3 已准备好开始运行请求的对象操作。 | Amazon S3 开始运行任务时,任务自动转入 Active状态。任务保持在Ready状态的时间长度取决于您是否已经在运行具有较高优先级的任务,以及完成这些任务需要多长时间。 | 
| Active | Amazon S3 正在对清单中列出的对象执行请求的操作。当任务处于 Active状态时,您可使用 Amazon S3 控制台,或者通过 REST API、Amazon CLI 或 Amazon 开发工具包使用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状态之后,就不会转换为任何其它状态。 | 
更新任务状态
以下 Amazon CLI 和适用于 Java 的 Amazon SDK 示例更新批量操作任务的状态。有关使用 Amazon S3 控制台管理批量操作任务的更多信息,请参阅使用 Amazon S3 控制台管理 S3 分批操作任务。
要使用以下示例命令,请将 user input
              placeholders
- 
            如果未在 create-job命令中指定--no-confirmation-required参数,则任务将保持为暂停状态,直至通过将其状态设置为Ready来确认任务。然后,Amazon S3 会使任务符合执行的条件。aws s3control update-job-status \ --regionus-west-2\ --account-id123456789012\ --job-id00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c\ --requested-job-status 'Ready'
- 
            通过将任务状态设置为 Cancelled来取消任务。aws s3control update-job-status \ --regionus-west-2\ --account-id123456789012\ --job-id00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c\ --status-update-reason "No longer needed" \ --requested-job-status Cancelled
有关如何使用适用于 Java 的 Amazon SDK 更新任务状态的示例,请参阅《Amazon S3 API Reference》中的 Update the status of a batch job。
通知和日志记录
除了请求完成报告外,还可以使用 Amazon CloudTrail 捕获、查看和审计批量操作活动。由于批量操作使用现有的 Amazon S3 API 操作来执行任务,因此,这些任务还会发出与您直接调用这些操作时相同的事件。因此,可以使用相同的通知、日志记录和审计工具以及已用于 Amazon S3 的过程,来跟踪和记录任务及其所有工作的进度。有关更多信息,请参阅以下部分中的示例。
注意
批量操作会在任务执行期间在 CloudTrail 中同时生成管理事件和数据事件。这些事件的数量随每个任务的清单中的键数量而扩展。有关更多信息,请参阅 CloudTrail 定价
有关 Amazon S3 事件的更多信息,请参阅 Amazon S3 事件通知。
跟踪任务失败
如果 S3 分批操作任务遇到的问题使其无法成功运行(如无法读取指定清单),则该任务失败。任务失败时,系统会生成一个或多个故障代码或失败原因。S3 批量操作将故障代码和原因与任务一起存储,便于您通过请求任务的详细信息来查看它们。如果您请求任务的完成报告,同时还会显示故障代码和原因。
为防止任务运行大量不成功的操作,Amazon S3 会对每个分批操作任务施加任务失败阈值。当任务已运行至少 1000 项工作时,Amazon S3 将监控工作失败率。在任何时刻,如果失败率(失败的任务数占已运行任务总数的比例)超过 50%,则任务失败。如果任务由于超过了任务失败阈值而失败,您可以确定造成失败的原因。例如,您可能在清单中意外地包括了一些指定存储桶中不存在的对象。修复错误之后,您可以重新提交任务。
注意
S3 批量操作异步进行操作,而工作并不一定按照清单中列出对象的顺序来运行。因此您不能使用清单顺序来确定哪些对象的任务成功,哪些对象的任务失败。而是可以通过查看任务的完成报告(如果已请求)或查看 Amazon CloudTrail 事件日志来帮助确定失败原因。
完成报告
在创建任务时,您可以请求完成报告。只要 S3 批量操作成功调用至少一项工作,Amazon S3 便会在任务完成运行工作、失败或被取消后生成完成报告。可对完成报告进行配置,以包含所有任务或只包含失败的任务。
完成报告包含任务配置、状态以及每项工作的信息,包括对象键和版本、状态、错误代码以及有关任何错误的描述。完成报告提供了以合并格式查看任务结果的简单途径,且无需进行任何附加设置。完成报告使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)来进行加密。有关完成报告的示例,请参阅 示例:S3 分批操作完成报告。
如果您未配置完成报告,则仍可使用 CloudTrail 和 Amazon CloudWatch 监控并审计您的任务及其各项工作。有关更多信息,请参阅以下主题: