使用 GetObject 请求从 StorageGRID 中的存储桶检索对象
您可以使用 S3 GetObject 请求从 S3 存储桶检索对象。
GetObject 和多部件对象
您可以使用 `partNumber`请求参数检索多部分或分段对象的特定部分。 `x-amz-mp-parts-count`响应元素指示对象有多少个部分。
您可以将 `partNumber`设置为 1,适用于分段/多部分对象和非分段/非多部分对象;但是, `x-amz-mp-parts-count`响应元素仅针对分段或多部分对象返回。
用户元数据中的 UTF-8 字符
StorageGRID 不解析或解释用户定义元数据中转义的 UTF-8 字符。如果键名称或值包含不可打印的字符,则用户定义的元数据中具有转义 UTF-8 字符的对象的 GET 请求不会返回 `x-amz-missing-meta`标头。
支持的请求标头
支持以下请求标头:
-
x-amz-checksum-mode:指定ENABLED`Range` 标头不支持与 `x-amz-checksum-mode` 一起用于 GetObject。当您在请求中包含 `Range` 且启用了 `x-amz-checksum-mode` 时,StorageGRID 不会在响应中返回校验和值。
不支持的请求标头
不支持以下请求标头,返回 XNotImplemented:
-
x-amz-website-redirect-location
版本控制
如果未指定 versionId`子资源,则该操作将获取版本化存储区中对象的最新版本。如果对象的当前版本是删除标记,则会返回"Not Found"状态,并将 `x-amz-delete-marker`响应标头设置为 `true。
使用客户提供的加密密钥 (SSE-C) 进行服务器端加密的请求标头
如果对象使用您提供的唯一密钥加密,请使用所有三个标头。
-
x-amz-server-side-encryption-customer-algorithm:指定AES256。 -
x-amz-server-side-encryption-customer-key: 指定对象的加密密钥。 -
x-amz-server-side-encryption-customer-key-MD5:指定对象加密密钥的 MD5 摘要。
|
|
您提供的加密密钥绝不会被存储。如果丢失加密密钥,则会丢失相应的对象。在使用客户提供的密钥保护对象数据之前,请查看 "${post_edited_translations.segment}" 中的注意事项。 |
GetObject 对 Cloud Storage Pool 对象的行为
如果对象已存储在 "云存储池" 中,则 GetObject 请求的行为取决于对象的状态。有关更多详细信息,请参见 "HeadObject"。
|
|
如果对象存储在云存储池中,并且该对象的一个或多个副本也存在于网格上,则GetObject请求将尝试从网格检索数据,然后再从云存储池检索数据。 |
| 对象的状态 | GetObject 的行为 |
|---|---|
已载入 StorageGRID 但尚未经过 ILM 评估的对象,或存储在传统存储池中或使用纠删码的对象 |
检索到对象的副本。 |
云存储池中的对象,但尚未转换到不可检索的状态 |
检索到对象的副本。 |
对象已转换为不可检索状态 |
使用 "RestoreObject" 请求将对象还原到可检索状态。 |
正在从不可检索状态还原的对象 |
等待 RestoreObject 请求完成。 |
对象已完全还原到云存储池 |
检索到对象的副本。 |
云存储池中的多部分或分段对象
如果您上传了多部分对象,或者 StorageGRID 将大型对象拆分为多个分段,StorageGRID 将通过对对象的部分或分段进行采样来确定该对象在云存储池中是否可用。在某些情况下,当对象的某些部分已转换为不可检索状态或对象的某些部分尚未还原时,GetObject 请求可能会错误地返回 200 OK。
在这些情况下:
-
GetObject 请求可能会返回一些数据,但在传输过程中停止。
-
后续 GetObject 请求可能会返回
403 Forbidden。