

# 跟踪任务状态和完成报告
<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)
+ [

# 示例：通过 AWS CloudTrail 在 Amazon EventBridge 中跟踪 S3 分批操作任务。
](batch-ops-examples-event-bridge-cloud-trail.md)
+ [

# 示例：S3 分批操作完成报告
](batch-ops-examples-reports.md)

## 任务状态
<a name="batch-ops-job-status-table"></a>

在您创建和运行任务之后，该任务会逐步经过一系列状态。下表描述了状态以及状态之间可能的转换。


| Status | 说明 | 转换 | 
| --- | --- | --- | 
| `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`。 | `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 和适用于 Java 的 AWS SDK 示例更新批量操作任务的状态。有关使用 Amazon S3 控制台管理批量操作任务的更多信息，请参阅[使用 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 Reference》**中的 [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 分批操作任务遇到的问题使其无法成功运行（如无法读取指定清单），则该任务失败。任务失败时，系统会生成一个或多个故障代码或失败原因。S3 批量操作将故障代码和原因与任务一起存储，便于您通过请求任务的详细信息来查看它们。如果您请求任务的完成报告，同时还会显示故障代码和原因。

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

**注意**  
S3 批量操作异步进行操作，而工作并不一定按照清单中列出对象的顺序来运行。因此您不能使用清单顺序来确定哪些对象的任务成功，哪些对象的任务失败。而是可以通过查看任务的完成报告（如果已请求）或查看 AWS CloudTrail 事件日志来帮助确定失败原因。

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

在创建任务时，您可以请求完成报告。只要 S3 批量操作成功调用至少一项工作，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)
+ [

# 示例：通过 AWS CloudTrail 在 Amazon EventBridge 中跟踪 S3 分批操作任务。
](batch-ops-examples-event-bridge-cloud-trail.md)
+ [

# 示例：S3 分批操作完成报告
](batch-ops-examples-reports.md)

# 示例：通过 AWS CloudTrail 在 Amazon EventBridge 中跟踪 S3 分批操作任务。
<a name="batch-ops-examples-event-bridge-cloud-trail"></a>

Amazon S3 分批操作任务活动在 AWS CloudTrail 中记录为事件。您可以在 Amazon EventBridge 中创建自定义规则，然后将这些事件发送到您选择的目标通知资源，例如 Amazon Simple Notification Service (Amazon SNS)。

**注意**  
Amazon EventBridge 是管理事件的首选方式。Amazon CloudWatch Events 和 EventBridge 是相同的底层服务和 API，但 EventBridge 提供了更多功能。您在 CloudWatch 或 EventBridge 中所作的更改将显示在每个控制台中。有关更多信息，请参阅 *[Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*。

**Topics**
+ [

## 在 CloudTrail 中记录的 S3 分批操作事件
](#batch-ops-examples-cloud-trail-events)
+ [

## 用于跟踪 S3 分批操作任务事件的 EventBridge 规则
](#batch-ops-examples-event-bridge)

## 在 CloudTrail 中记录的 S3 分批操作事件
<a name="batch-ops-examples-cloud-trail-events"></a>



创建分批操作任务后，它将作为 `JobCreated` 事件记录在 CloudTrail 中。在任务运行时，它会在处理过程中更改状态，并且其他 `JobStatusChanged` 事件将记录到 CloudTrail 中。您可以在 [CloudTrail 控制台](https://console.aws.amazon.com/cloudtrail)中查看这些事件。有关 CloudTrail 的更多信息，请参阅《[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html)》。

**注意**  
CloudTrail 中只记录 S3 分批操作任务 `status-change` 事件。

**Example — CloudTrail 记录的 S3 批处理操作作业完成事件**  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-05T18:25:30Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123412341234",
    "serviceEventDetails": {
        "jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "jobArn": "arn:aws:s3:us-west-2:181572960644:job/d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "status": "Complete",
        "jobEventId": "b268784cf0a66749f1a05bce259804f5",
        "failureCodes": [],
        "statusChangeReason": []
    }
}
```

## 用于跟踪 S3 分批操作任务事件的 EventBridge 规则
<a name="batch-ops-examples-event-bridge"></a>

以下示例说明如何在 Amazon EventBridge 中创建规则，以便将 AWS CloudTrail 记录的 S3 分批操作事件捕获到您选择的目标。

为此，您可以按照[创建用于响应事件的 EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)中的所有步骤来创建规则。粘贴以下 S3 分批操作自定义事件模式策略（如果适用），然后选择所需的目标服务。

**S3 分批操作自定义事件模式策略**

```
{
    "source": [
        "aws.s3"
    ],
    "detail-type": [
        "AWS Service Event via CloudTrail"
    ],
    "detail": {
        "eventSource": [
            "s3.amazonaws.com"
        ],
        "eventName": [
            "JobCreated",
            "JobStatusChanged"
        ]
    }
}
```

 以下示例是从 EventBridge 事件规则发送到 Amazon Simple Queue Service (Amazon SQS) 的两个分批操作事件。由于分批操作任务在处理期间会经历多种不同的状态（`New`、`Preparing`、`Active` 等），因此对于每个任务，您都将收到多条消息。

**Example — JobCreated 示例事件**  

```
{
    "version": "0",
    "id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2020-02-27T15:25:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "11112223334444",
            "invokedBy": "s3.amazonaws.com"
        },
        "eventTime": "2020-02-27T15:25:49Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "JobCreated",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "s3.amazonaws.com",
        "userAgent": "s3.amazonaws.com",
        "eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
            "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
            "status": "New",
            "jobEventId": "f177ff24f1f097b69768e327038f30ac",
            "failureCodes": [],
            "statusChangeReason": []
        }
    }
}
```

**Example — JobStatusChanged 任务完成事件**  

```
{
  "version": "0",
  "id": "c8791abf-2af8-c754-0435-fd869ce25233",
  "detail-type": "AWS Service Event via CloudTrail",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2020-02-27T15:26:42Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "accountId": "1111222233334444",
      "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-27T15:26:42Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "serviceEventDetails": {
      "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
      "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
      "status": "Complete",
      "jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
      "failureCodes": [],
      "statusChangeReason": []
    }
  }
}
```

# 示例：S3 分批操作完成报告
<a name="batch-ops-examples-reports"></a>

当您创建 S3 分批操作任务时，可以为全部任务或仅失败任务请求完成报告。只要成功调用了至少一个任务，S3 分批操作即会为已完成、已失败或已取消的任务生成报告。

完成报告包含每个任务的其他信息，包括对象键名称和版本、版本、错误代码以及任何错误的描述。每个失败任务的错误的描述可用于诊断在任务创建期间发生的问题，如权限。对于**计算校验和**任务，完成报告包含每个对象的校验和值。

**注意**  
完成报告始终使用 Amazon S3 托管式密钥（SSE-S3）进行加密。

**Example — 顶级清单结果文件**  
顶级 `manifest.json` 文件包含每个成功报告的位置以及（如果任务有任何失败）失败报告的位置，如以下示例所示。  

```
{
    "Format": "Report_CSV_20180820",
    "ReportCreationDate": "2019-04-05T17:48:39.725Z",
    "Results": [
        {
            "TaskExecutionStatus": "succeeded",
            "Bucket": "my-job-reports",
            "MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
        },
        {
            "TaskExecutionStatus": "failed",
            "Bucket": "my-job-reports",
            "MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
        }
    ],
    "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
```

**成功的任务报告**

成功任务报告包含*成功* 任务的以下各项内容：
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**失败的任务报告**

失败的任务报告包含所有*失败*任务的以下信息：
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Example — Lambda 函数任务报告**  
在以下示例中，Lambda 函数将 Amazon S3 对象成功复制到其他存储桶。返回的 Amazon S3 响应会传回到 S3 分批操作，然后写入最终完成报告。  

```
amzn-s3-demo-bucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id': '3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId': '1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id': '1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id': '8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/xml'}}}"
```
以下示例报告显示 AWS Lambda 函数超时，从而导致失败以超出失败阈值的情况。然后，它会标记为 `PermanentFailure`。  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task timed out after 3.00 seconds""}"
```

**Example — 计算校验和任务报告**  
在以下示例中，**计算校验和**操作成功计算了上传的静态对象的校验和。返回的 Amazon S3 响应会传回到 S3 批量操作，然后写入最终完成报告：  

```
amzn-s3-demo-bucket1,s3-standard-1mb-test-object,,succeeded,200,,"{""checksum_base64"":""bS9TOQ\u003d\u003d"",""etag"":""3c3c1813042989094598e4b57ecbdc82"",""checksumAlgorithm"":""CRC32"",""checksumType"":""FULL_OBJECT"",""checksum_hex"":""6D2F5339""}"
```
以下示例报告显示了当**计算校验和**操作失败并导致任务报告失败时会发生什么：  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 SSE-C encryption type is not supported for this operation", ""errorCode"": "400"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Key not found", ""errorCode"": "404"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Internal server error, please retry", ""errorCode"": "500"}"
```