上传段(设置上传 ID) - Simple Storage Service(Amazon S3)Glacier
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

上传段(设置上传 ID)

描述

此分段上传操作会上传档案的一段。您可以按任何顺序上传档案段,因为在您的上传段请求中,您会指定将在此段中上传的汇编档案的字节范围。此外,您还可以并行上传这些段。您最多可以为一个分段上传上传 10 000 段。

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

如果以下任何条件成立,Amazon S3 Glacier (S3 Glacier) 会拒绝您的上传分段请求:

  • SHA256 树哈希不匹配— 为确保部件数据在传输过程中不会损坏,您需要计算该部件的 SHA256 树哈希并将其包含在请求中。收到部件数据后,S3 Glacier 还会计算 SHA256 树形哈希。如果这两个哈希值不匹配,则操作会失败。有关计算 SHA256 树形哈希的信息,请参阅“计算校验和”。

  • SHA256 线性哈希不匹配- 需要进行授权,您需要计算整个上传有效负载的 SHA256 线性哈希并将其包含在请求中。有关计算 SHA256 线性哈希的信息,请参阅计算校验和

  • 部分大小不匹配— 除最后一个部分外,每个部分的大小必须与相应启动分段上传(发布分段上传)请求中指定的大小相匹配。最后一段的大小必须是与指定大小相同的大小或者小于指定大小。

    注意

    如果您上传一段,其大小小于您在启动分段上传请求中指定的段大小,并且该段不是最后一段,则上传段请求会成功。但是,后续的完成分段上传请求会失败。

  • 范围未对齐— 请求中的字节范围值与相应启动请求中指定的分段大小不一致。例如,如果您将分段大小指定为 4194304 字节 (4 MB),则 0 到 4194303 字节 (4 MB —1) 和 4194304 (4 MB) 到 8388607 (8 MB —1) 是有效的部件范围。但是,如果您将范围值设置为 2MB 到 6MB,则范围与段大小未对齐,上传将失败。

此操作是幂等的。如果您多次上传相同的段,则包括在最近请求中的数据会覆盖之前上传的数据。

请求

您将此 HTTPPUT 请求发送到启动分段上传请求返回的上传 ID 的 URI。S3 Glacier 使用上传 ID 将分段上传与特定的分段上传相关联。请求必须包括段数据的 SHA256 树形哈希(x-amz-SHA256-tree-hash 标头)、整个有效负载的 SHA256 线性哈希(x-amz-content-sha256 标头)、字节范围(Content-Range 标头)以及段的字节长度(Content-Length 标头)。

语法

PUT /AccountId/vaults/VaultName/multipart-uploads/uploadID HTTP/1.1 Host: glacier.Region.amazonaws.com Date: Date Authorization: SignatureValue Content-Range: ContentRange Content-Length: PayloadSize Content-Type: application/octet-stream x-amz-sha256-tree-hash: Checksum of the part x-amz-content-sha256: Checksum of the entire payload x-amz-glacier-version: 2012-06-01

注意

AccountId值是拥有文件库的账户的Amazon Web Services 账户 ID。您可以指定Amazon Web Services 账户 ID,也可以选择单个 “-”(连字符),在这种情况下,Amazon S3 Glacier 使用与用于签署请求的证书关联的Amazon Web Services 账户 ID。如果您使用账户 ID,请勿在 ID 中包含任何连字符 ('-')。

请求参数

此操作不使用请求参数。

请求标头

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

名称 描述 必填
Content-Length

标识段的长度(以字节为单位)。

类型:字符串

默认值:无

限制:无

Content-Range

确定将在此部分上传的汇编档案中的字节范围。S3 Glacier 使用这些信息按正确的顺序组装档案。此标头的格式遵循 RFC 2616。示例标头为 Content-Range:bytes 0-4194303/*

类型:字符串

默认值:无

约束:范围不能大于您在启动分段上传时指定的段大小。

x-amz-content-sha256

上传的有效负载的 SHA256 校验和(线性哈希)。这不是您在 x-amz-sha256-tree-hash 标头中指定的相同值。

类型:字符串

默认值:无

限制:无

x-amz-sha256-tree-hash

指定要上传的数据的 SHA256 树形哈希。有关计算 SHA256 树形哈希的信息,请参阅“计算校验和”。

类型:字符串

默认值:无

限制:无

请求正文

请求正文包含要上传的数据。

响应

成功上传分段后,S3 Glacier 会返回204 No Content响应。

语法

HTTP/1.1 204 No Content x-amzn-RequestId: x-amzn-RequestId Date: Date x-amz-sha256-tree-hash: ChecksumComputedByAmazonGlacier

响应标头

成功的响应包括以下响应标头,以及所有操作通用的响应标头。有关常见响应标头的更多信息,请参阅常用响应标头

名称 描述
x-amz-sha256-tree-hash

S3 Glacier 为上传的分段计算的 SHA256 树哈希。

类型:字符串

响应正文

此操作不会返回响应正文。

示例

以下请求会上传一个 4MB 的段。请求设置了字节范围,使它作为档案中的第一段。

示例请求

示例发送 HTTP PUT 请求,以上传一个 4MB 的段。该请求会发送到启动分段上传请求返回的上传 ID 的 URI。Content-Range 标头将该段标识为档案的第一个 4MB 数据段。

PUT /-/vaults/examplevault/multipart-uploads/OW2fM5iVylEpFEMM9_HpKowRapC3vn5sSL39_396UW9zLFUWVrnRHaPjUJddQ5OxSHVXjYtrN47NBZ-khxOjyEXAMPLE HTTP/1.1 Host: glacier.us-west-2.amazonaws.com Date: Wed, 10 Feb 2017 12:00:00 GMT Content-Range:bytes 0-4194303/* x-amz-sha256-tree-hash:c06f7cd4baacb087002a99a5f48bf953 x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628 Content-Length: 4194304 Authorization: Authorization=AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20141123/us-west-2/glacier/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version,Signature=16b9a9e220a37e32f2e7be196b4ebb87120ca7974038210199ac5982e792cace

上传下一段的步骤相同;但是,您必须计算您要上传的段的新 SHA256 树形哈希,并且还必须指定新的字节范围以指示该段在最终汇编中的位置。以下请求会使用相同的上传 ID 来上传另一段。该请求会指定之前请求后档案的下一个 4MB 以及 4MB 的段大小。

PUT /-/vaults/examplevault/multipart-uploads/OW2fM5iVylEpFEMM9_HpKowRapC3vn5sSL39_396UW9zLFUWVrnRHaPjUJddQ5OxSHVXjYtrN47NBZ-khxOjyEXAMPLE HTTP/1.1 Host: glacier.us-west-2.amazonaws.com Date: Wed, 10 Feb 2017 12:00:00 GMT Content-Range:bytes 4194304-8388607/* Content-Length: 4194304 x-amz-sha256-tree-hash:f10e02544d651e2c3ce90a4307427493 x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628 x-amz-glacier-version: 2012-06-01 Authorization: Authorization=AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-west-2/glacier/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, Signature=16b9a9e220a37e32f2e7be196b4ebb87120ca7974038210199ac5982e792cace

分段可以按任何顺序上传;S3 Glacier 使用每个部件的范围规范来确定组装它们的顺序。

响应示例

HTTP/1.1 204 No Content x-amzn-RequestId: AAABZpJrTyioDC_HsOmHae8EZp_uBSJr6cnGOLKp_XJCl-Q x-amz-sha256-tree-hash: c06f7cd4baacb087002a99a5f48bf953 Date: Wed, 10 Feb 2017 12:00:00 GMT