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

下载数据时接收校验和

当您使用启动任务 API(请参阅“启动作业(POST 作业)”)取回档案时,您可以选择性地指定要取回的档案范围。类似地,当您使用获取任务输出 API(请参阅“获取任务输出(获取输出)”)下载您的数据时,您可以选择性地指定要下载的数据范围。这些范围有两个特征,您在取回和下载档案的数据时务必要了解这两个特征。要取回的范围必须与档案以兆字节对齐。为了在您下载数据时接收校验和值,要取回的范围以及要下载的范围必须以树形哈希对齐。这两种类型的范围对齐的定义如下:

  • 以兆字节对齐 – 在以下情况下,范围 [StartByte, EndBytes] 是以兆字节 (1024*1024) 对齐的:StartBytes 可被 1MB 整除,EndBytes 加 1 可被 1MB 整除或者等于指定的档案的结束值(档案字节大小减 1)。启动任务 API 中使用的范围(如果指定了范围)必须以兆字节对齐。

  • 以树形哈希对齐 – 当且仅当在范围 [StartBytes, EndBytes] 之上构建的树形哈希的根等于整个档案的树形哈希中的一个节点时,该范围才与档案是以树形哈希对齐的。为了接收您下载的数据的校验和值,要取回的范围以及要下载的范围必须以树形哈希对齐。有关范围以及它们与档案树形哈希的关系的示例,请参阅“树形哈希示例:取回以树形哈希对齐的档案范围”。

    请注意,以树形哈希对齐的范围也是以兆字节对齐的。但是,以兆字节对齐的范围却不一定是以树形哈希对齐的。

以下案例描述了您在下载档案数据时,会在哪些情况下收到校验和值:

  • 如果您在启动任务请求中未指定要取回的范围,并且在获取任务请求中下载整个档案。

  • 如果您在启动任务请求中未指定要取回的范围,并且在获取任务请求中指定要下载的以树形哈希对齐的范围。

  • 如果您在启动任务请求中指定要取回的以树形哈希对齐的范围,并且在获取任务请求中下载整个范围。

  • 如果您在启动任务请求中指定要取回的以树形哈希对齐的范围,并且在获取任务请求中指定要下载的以树形哈希对齐的范围。

如果您在启动任务请求中指定要取回的范围,而该范围未以树形哈希对齐,则您在获取任务请求中下载数据时,仍然可以获取档案数据,但系统却不会返回校验和值。

树形哈希示例:取回以树形哈希对齐的档案范围

假设您的文件库中有一个 6.5MB 的档案,您要取回该档案的 2MB。您在启动任务请求中指定 2MB 范围的方式决定了您在下载数据时是否会收到数据校验和值。下图说明了对于 6.5 MB 档案您可以下载的两个 2 MB 范围。这两个范围均以兆字节对齐,但只有一个范围以树形哈希对齐。

以树形哈希对齐的范围说明

此部分对构成以树形哈希对齐的范围的内容给出了确切的说明。您在下载档案的一部分并且指定要取回的数据范围以及要从取回的数据下载的范围时,以树形哈希对齐的范围非常重要。如果这两个范围均以树形哈希对齐,则您在下载数据时将收到校验和数据。

当且仅当在 [A, B] 之上构建新的树形哈希时,范围 [A, B] 的树形哈希的根等于整个档案的树形哈希中的一个节点,该范围才与档案是以树形哈希对齐的。您可以看到 树形哈希示例:取回以树形哈希对齐的档案范围 中的图表显示了这一点。在此部分中,我们提供了树形哈希对齐的说明。

考虑 [P, Q) 作为一个 N 兆字节 (MB) 的档案的范围查询,而 PQ 为 1MB 的倍数。请注意,实际包括范围为 [P MB, Q MB – 1 字节],但是为了简单起见,我们将它显示为 [P, Q)。基于这些考虑因素得知:

  • 如果 P 为奇数,则只有一个可能的以树形哈希对齐的范围,即,[P, P + 1 MB)。

  • 如果 P 为偶数,k 为最大数,其中 P 可以写成 2k * X,则以 P 开始的以树形哈希对齐的范围最多有 k 个。X 为大于 0 的整数。以树形哈希对齐的范围分为以下类别:

    • 对于每个 i,其中 (0 <= i <= k) 并且 P + 2i < N,则 [P, Q + 2i) 是以树形哈希对齐的范围。

    • P = 0 是 A = 2[lgN]*0 时的特殊情况