Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理批量操作作业

注册预览版

Amazon S3 提供一组功能强大的工具,来帮助您在创建批处理操作作业后管理作业。此部分介绍可用于管理作业的操作。您可以使用 AWS 管理控制台、AWS CLI、AWS 开发工具包或 REST API 来执行本部分列出的所有操作。

列出作业

您可以检索批量操作作业的列表。此列表包含您尚未完成的作业,以及您在过去 90 天内完成的作业。该作业列表包含每个作业的信息,如其 ID、描述、优先级、当前状态以及成功和失败的作业数。您可以按状态筛选作业列表。当您通过控制台检索作业列表时,还可以按描述或 ID 搜索作业并按 AWS 区域对其进行筛选。

查看作业详细信息

如果您需要的信息比通过列出作业来检索的作业信息多,则可查看单个作业的所有详细信息。除了作业列表中返回的信息之外,单个作业的详细信息还包含其他项目。此信息包括操作参数、有关清单的详细信息、有关完成报告的信息(如果您在创建作业时配置了完成报告)以及您为运行作业而分配的用户角色的 Amazon 资源名称 (ARN)。通过查看单个作业的详细信息,可以访问作业的整个配置。

分配作业优先级

您可为每个作业分配一个任意正整数的数字优先级。Amazon S3 批处理操作根据分配的优先级优先执行作业。系统将首先评估具有较高优先级(或者优先级参数的数值较高)的作业。优先级按降序确定。例如,优先级值为 10 的作业队列将会比优先级值为 1 的作业队列优先计划。

您可以在作业正在运行时更改其优先级。如果您在作业运行时提交优先级更高的新作业,则优先级较低的作业可以暂停,以允许优先级高的作业运行。

注意

Amazon S3 批处理操作尽最大努力遵循作业优先级。尽管优先级高的作业通常优先于优先级低的作业,但 Amazon S3 无法保证作业的严格顺序。

任务状态

在您创建作业之后,该作业会逐步经过一系列状态。下表说明了作业所具有的状态以及作业状态之间可能的转换。

状态 描述 转换
New 在您创建作业时,作业首先处于 New 状态。 Amazon S3 开始处理清单对象时,作业自动转入 Preparing 状态。
Preparing Amazon S3 正在处理清单对象及其他作业参数,以设置和运行作业。 Amazon S3 完成清单和其他参数的处理之后,作业自动转入 Ready 状态。然后,它随时可以在清单中列出的对象上开始运行指定的操作。

如果作业要求在运行之前确认,就像您在使用 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 开发工具包使用 DescribeJob 操作监控其进度。 对象上没有运行的操作时,作业移出 Active 状态。此过程自动进行,例如在作业成功完成或失败时。或者,此过程也可作为用户操作的结果发生,例如取消某个作业。作业转入的状态取决于发生转换的原因。
Pausing 作业从其他状态转换为 Paused Pausing 阶段完成时,作业自动转入 Paused 状态。
Paused 在当前作业正在运行时,如果您提交了具有更高优先级的其他作业,作业可以进入 Paused 状态。 对于处于 Paused 状态的作业,如果阻止了该作业的任何较高优先级的作业执行完成、失败或暂停,则该作业自动返回 Active 状态。
Complete 作业已完成在清单中所有对象上执行请求的操作。对于各个对象,操作可能成功或失败。如果您配置作业生成完成报告,则在作业处于 Complete 状态之后报告立即可用。 Complete 是最终状态。作业进入 Complete 状态之后,将不会转换为任何其他状态。
Cancelling 作业转换为 Cancelled 状态。 Cancelling 阶段完成时,作业自动转入 Cancelled 状态。
Cancelled 您请求了取消作业,Amazon S3 批处理操作已成功取消作业。作业不会提交任何新请求到 Amazon S3。 Cancelled 是最终状态。作业进入 Cancelled 状态之后,它不会转换为任何其他状态。
Failing 作业转换为 Failed 状态。 Failing 阶段完成后,作业自动转入 Failed 状态。
Failed 作业已失败,不再运行。有关作业失败的更多信息,请参阅跟踪作业失败 Failed 是最终状态。作业进入 Failed 状态之后,它不会转换为任何其他状态。

跟踪作业失败

如果批量操作作业遇到的问题使其无法成功运行(如无法读取指定清单),则该作业失败。当作业失败时,将生成一个或多个故障代码或故障原因。Amazon S3 批处理操作将故障代码和原因与作业一起存储,以便于您通过请求作业的详细信息来查看。如果您请求作业的完成报告,同时还会显示故障代码和原因。

为防止作业运行大量不成功的操作,Amazon S3 会对每个批处理操作作业施加作业失败阈值。当作业已执行至少 1000 个任务时,Amazon S3 将监控任务失败率。如果任何时刻的失败率(失败的任务数占已执行总任务数的比例)超过 50%,则作业失败。如果作业由于超过了任务失败阈值而失败,您可以确定造成失败的原因。例如,您可能在清单中意外地包括了一些指定存储桶中不存在的对象。修复错误之后,您可以重新提交作业。

注意

Amazon S3 批处理操作异步操作,任务不一定按照清单中所列的对象顺序来执行任务。因此您不能使用清单顺序来确定哪些对象的任务成功,哪些对象的任务失败。而是可以通过查看作业的完成报告(如果已请求)或查看 AWS CloudTrail 事件日志来帮助确定失败原因。

通知和日志记录

除了请求完成报告外,您还可以使用 Amazon S3 事件来捕获、查看和审核批处理操作活动。在作业执行期间,它会发出您可以使用 AWS CloudTrail、Amazon Simple Notification Service (Amazon SNS) 和 Amazon Simple Queue Service (Amazon SQS) 捕获的事件。由于批量操作使用现有的 Amazon S3 API 来执行任务,所以这些任务还会发出与您直接调用这些 API 时相同的事件。因此,您可以使用相同的通知、日志记录和审核工具以及已用于 Amazon S3 的进程来跟踪和记录您的作业及其所有任务的进度。有关 Amazon S3 事件的更多信息,请参阅 配置 Amazon S3 事件通知

完成报告

在创建作业时,您可以请求完成报告。那么,只要 Amazon S3 批处理操作成功调用至少一个任务,Amazon S3 便会在运行任务完成、失败或被取消后生成完成报告。可对完成报告进行配置,以包含所有任务或只包含失败的任务。

完成报告包含任务配置以及每个任务的状态和信息,包括对象键和版本、状态、错误代码以及任何错误的描述。如果您未配置完成报告,则仍可使用 CloudTrail、Amazon CloudWatch、Amazon SNS 和 Amazon SQS 监控并审核您的作业及其任务。但完成报告提供了以合并格式查看任务结果的简单途径,且无需进行任何附加设置。