

# 计算校验和
<a name="batch-ops-compute-checksums"></a>

可以将 S3 批量操作与**计算校验和**操作结合使用，来对存储在 Amazon S3 中的静态对象执行校验和计算。**计算校验和**操作计算对象校验和，可以使用这些校验和来验证数据完整性，而无需下载或还原所存储数据的对象。对于所有支持的校验和算法，可以使用**计算校验和**操作来计算复合和完整对象校验和类型的校验和。

使用**计算校验和**操作，可以通过单个任务请求处理数十亿个对象。无论对象大小如何，此批量操作均与所有 S3 存储类别兼容。要创建**计算校验和**任务，请使用 Amazon S3 控制台、AWS Command Line Interface（AWS CLI）、AWS SDK 或 Amazon S3 REST API。

[启用服务器访问日志记录](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html)后，还可以接收有关**计算校验和**任务的日志条目。完成校验和计算后，**计算校验和**任务操作会发出单独的服务器访问日志事件。这些日志条目遵循标准的 [S3 服务器访问日志记录格式](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html)，并包括操作类型、时间戳、[error codes](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) 和关联的**计算校验和**任务 ID 等字段。此日志记录提供对对象执行的校验和验证活动的审计跟踪记录，有助于您跟踪和验证数据完整性操作。

**注意**  
**计算校验和**操作不支持使用具有客户提供的加密密钥的服务器端加密（SSE-C）进行加密的对象。但是，可以将**计算校验和**操作用于通过使用[具有 S3 托管式密钥的服务器端加密（SSE-S3）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)、具有 AWS Key Management Service 的服务器端加密（DSSE-KMS）进行加密的对象。确保您已[授予适当的 AWS KMS 权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#require-sse-kms)来执行**计算校验和**操作。

要开始使用批量操作来进行**计算校验和**操作，您可以：
+ 手动创建新的清单文件。
+ 使用现有的清单。
+ 指示批量操作根据您[在创建任务时指定的](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html#specify-batchjob-manifest)对象筛选条件自动生成清单。

然后，提交**计算校验和**任务请求并监控其状态。**计算校验和**任务完成后，您将在指定的目标存储桶中自动收到完成报告。此完成报告包含存储桶中每个对象的校验和信息，可让您验证数据一致性。有关如何使用此报告来检查任务的更多信息，请参阅[跟踪任务状态和完成报告](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html)。

有关**计算校验和**功能以及如何在控制台中使用**计算校验和**的更多信息，请参阅[在 Amazon S3 中检查静态数据的对象完整性](checking-object-integrity-at-rest.md)。有关如何向**计算校验和**发送 REST 请求的信息，请参阅《Amazon S3 API Reference》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html) 和 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html)。

以下各节介绍如何开始将**计算校验和**操作与 S3 批量操作结合使用。

**Topics**
+ [S3 批量操作**计算校验和**注意事项](#batch-ops-compute-checksum-considerations)
+ [S3 批量操作完成报告](#batch-ops-compute-checksum-completion-report)

## S3 批量操作**计算校验和**注意事项
<a name="batch-ops-compute-checksum-considerations"></a>

在使用**计算校验和**操作之前，请查看以下注意事项列表：
+ 如果您的清单包含版本 ID 字段，则必须为清单中的所有对象提供版本 ID。如果未指定版本 ID，**计算校验和**请求将针对最新版本的对象执行该操作。
+ 要在[服务器访问日志](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html)中接收**计算校验和**操作详细信息，必须先在源存储桶上[启用服务器访问日志记录](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)，然后指定用于存储日志的目标存储桶。目标存储桶必须也位于源存储桶所在的相同 AWS 区域和 AWS 账户中。配置服务器访问日志记录后，**计算校验和**操作会生成[日志记录](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields)，其中包含标准字段，例如操作类型、HTTP 状态代码、[S3 错误代码](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList)、时间戳和关联的**计算校验和**作业 ID。**计算校验和**操作异步运行。因此，[日志条目](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields)在其各个日志条目中使用**计算校验和**任务 ID，而不是请求 ID。
+ 对于存储的对象，生成报告可能需要长达几个小时。
+ 对于以下 S3 Glacier 存储类别，**计算校验和**任务可能需要长达一周的时间才能完成：
  + S3 Glacier Flexible Retrieval
  + S3 Glacier Deep Archive
+ 对于将在其中写入完成报告的存储桶，在运行**计算校验和**操作时，必须使用[存储桶拥有者条件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-when-to-use)。如果对于提交的任务请求，实际存储桶拥有者与预期存储桶拥有者不匹配，则任务将失败。有关不支持存储桶拥有者条件的 S3 操作的列表，请参阅[限制和局限性](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-restrictions-limitations)。

## S3 批量操作完成报告
<a name="batch-ops-compute-checksum-completion-report"></a>

当您创建**计算校验和**任务时，可以请求 S3 批量操作完成报告。此 CSV 文件显示对象、成功或失败代码、输出和描述。有关任务跟踪和完成报告的更多信息，请参阅[完成报告](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html#batch-ops-completion-report)。