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

完成分段上传(发布上传 ID)

描述

您可以调用此分段上传操作来通知 Glacier 所有档案段已上传,使 Glacier 能够用上传的段来拼组档案。

有关分段上传的信息,请参阅分段上传大型档案(分段上传)

拼组档案并将其保存到文件库后,Glacier 返回新创建的档案资源的档案 ID。上传档案后,您应保存返回的档案 ID,以便在以后取回该档案。

在请求中,您必须包括对您上传的整个档案进行计算得出的 SHA256 树形哈希。有关计算 SHA256 树形哈希的信息,请参阅“计算校验和”。在服务器端,Glacier 还会构造拼组档案的 SHA256 树形哈希。如果值匹配,则 Glacier 会将档案保存到文件库;否则,它返回错误,并且操作会失败。列出段(获取上传 ID) 操作可以返回特定分段上传已上传段的列表。它包括每个已上传段的校验和信息,可以用于解决错误的校验和问题。

此外,Glacier 还会检查是否有任何缺失的内容范围。上传段时,您可以指定范围值,用于标识每段在最终档案汇编的位置。拼组最终档案时,Glacier 会检查是否有任何缺失的内容范围;如果有任何缺失的内容范围,则 Glacier 返回错误,并且“完成分段上传”操作会失败。

完成分段上传是一种幂等的操作。第一次成功完成分段上传后,如果您在短时间内再次调用该操作,则该操作将成功并返回相同的档案 ID。这在您遇到导致连接中断的网络问题或收到 500 服务器错误时很有用,在这种情况下,您可以重复您的完成分段上传请求并获取相同的档案 ID,而无需创建重复的档案。但是,请注意,在分段上传完成后,您不能调用列出段操作,并且分段上传将不会出现在列出分段上传响应中,即使可能幂等完成也是如此。

请求

要完成分段上传,您需要将 HTTP POST 请求发送到 Glacier 因响应您的启动分段上传请求而创建的上传 ID 的 URI。这是您在上传段时使用的相同 URI。除了常用的必需标头以外,您还必须包括整个档案的 SHA256 树形哈希的结果以及该档案的总大小(以字节为单位)。

语法

POST /AccountId/vaults/VaultName/multipart-uploads/uploadID Host: glacier.Region.amazonaws.com.cn Date: date Authorization: SignatureValue x-amz-sha256-tree-hash: SHA256 tree hash of the archive x-amz-archive-size: ArchiveSize in bytes x-amz-glacier-version: 2012-06-01

注意

AccountId 值为拥有文件库的账户的 AWS 账户 ID。您可以指定一个 AWS 账户 ID 或者选择指定单一的“-” (连字符),在这种情况下,Amazon Glacier 会使用与用于对请求签名的证书关联的 AWS 账户 ID。如果您使用账户 ID,请勿在该 ID 中包括连字符 (“-”)。

请求参数

此操作不使用请求参数。

请求标头

除了所有操作都具有的请求头之外,此操作还使用以下请求头。有关通用请求头的更多信息,请参阅常见请求标头

名称 描述 必需
x-amz-archive-size

整个档案的总大小(以字节为单位)。此值应为您上传的各段的所有大小之和。

类型:字符串

默认值:无

限制:无

x-amz-sha256-tree-hash

整个档案的 SHA256 树形哈希。它是各段的 SHA256 树形哈希的树形哈希。如果您在请求中指定的值与 Glacier 对最终拼组档案进行计算得出的 SHA256 树形哈希不匹配,则 Glacier 返回错误,并且请求会失败。

类型:字符串

默认值:无

限制:无

请求元素

此操作不使用请求要素。

响应

Glacier 会创建整个档案的 SHA256 树形哈希。如果值与您在请求中指定的整个档案的 SHA256 树形哈希相匹配,则 Glacier 会将该档案添加到文件库。作为响应,它会返回 HTTP Location 标头,其中包括新添加的档案资源的 URL 路径。如果您在请求中发送的档案大小或 SHA256 不匹配,则 Glacier 将返回错误,并且上传操作会保持未完成状态。稍后可以使用正确值重试完成分段上传操作,此时,您可以成功创建档案。如果分段上传未完成,则 Glacier 最终会收回上传 ID。

语法

HTTP/1.1 201 Created x-amzn-RequestId: x-amzn-RequestId Date: Date Location: Location x-amz-archive-id: ArchiveId

响应标头

除了所有操作都具有的响应头之外,成功的响应还包括以下响应头。有关通用响应头的更多信息,请参阅常用响应标头

名称 描述
Location

新创建档案的相对 URI 路径。此 URL 包括 Glacier 生成的档案 ID。

类型:字符串

x-amz-archive-id

档案的 ID。此值也包括在 Location 标头中,作为该标头的一部分。

类型:字符串

响应字段

此操作不返回响应正文。

示例

示例请求

在此示例中,HTTP POST 请求会发送到启动分段上传请求返回的 URI。该请求指定了整个档案的 SHA256 树形哈希和档案总大小。

POST /-/vaults/examplevault/multipart-uploads/OW2fM5iVylEpFEMM9_HpKowRapC3vn5sSL39_396UW9zLFUWVrnRHaPjUJddQ5OxSHVXjYtrN47NBZ-khxOjyEXAMPLE HTTP/1.1 Host: glacier.us-west-2.amazonaws.com.cn z-amz-Date: 20170210T120000Z x-amz-sha256-tree-hash:1ffc0f54dd5fdd66b62da70d25edacd0 x-amz-archive-size:8388608 x-amz-glacier-version: 2012-06-01 Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20141123/us-west-2/glacier/aws4_request,SignedHeaders=host;x-amz-date;x-amz-glacier-version,Signature=9257c16da6b25a715ce900a5b45b03da0447acf430195dcb540091b12966f2a2

响应示例

以下示例响应显示 Glacier 从您上传的段成功创建了档案。该响应包括具有完整路径的档案 ID。

HTTP/1.1 201 Created x-amzn-RequestId: AAABZpJrTyioDC_HsOmHae8EZp_uBSJr6cnGOLKp_XJCl-Q Date: Wed, 10 Feb 2017 12:00:00 GMT Location: /111122223333/vaults/examplevault/archives/NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId x-amz-archive-id: NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId

您现在可以向新添加的资源/档案的 URI 发送 HTTP 请求。例如,您可以发送 GET 请求,以取回档案。