Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

GetObject

贡献者

您可以使用S3 GetObject请求从S3存储分段中检索对象。

GetObject和多部分对象

您可以使用 partNumber 用于检索多部分或分段对象的特定部分的请求参数。 。 x-amz-mp-parts-count 响应元素指示对象有多少个零件。

您可以设置 partNumber 对于分段/多部分对象和非分段/非多部分对象、均为1;但是、 x-amz-mp-parts-count 只有分段对象或多部分对象才会返回响应元素。

用户元数据中的 UTF-8 字符

StorageGRID 不会解析或解释用户定义的元数据中的转义 UTF-8 字符。对用户定义的元数据中具有转义UTF-8字符的对象发出的获取请求不会返回 x-amz-missing-meta 如果密钥名称或值包含不可打印的字符、则为标题。

请求标头不受支持

不支持以下请求标头、并返回 XNotImplemented

  • x-amz-website-redirect-location

版本控制

如果为 versionId 未指定子资源、此操作将提取受版本控制的存储分段中的对象的最新版本。如果对象的当前版本是删除标记、则会随返回"未找到"状态 x-amz-delete-marker 响应标头设置为 true

使用客户提供的加密密钥( SSI-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摘要。

注意 您提供的加密密钥永远不会存储。如果丢失加密密钥,则会丢失相应的对象。在使用客户提供的密钥保护对象数据之前、请查看中的注意事项 "使用服务器端加密"

GetObject for Cloud Storage Pool对象的行为

对象已存储在中 "云存储池",GetObject请求的行为取决于对象的状态。请参见 "HeadObject" 有关详细信息:

备注 如果对象存储在云存储池中、并且该对象的一个或多个副本也位于网格中、则GetObject请求将尝试从网格中检索数据、然后再从云存储池中检索数据。
对象的状态 GetObject的行为

对象已载入 StorageGRID 但尚未通过 ILM 进行评估,或者存储在传统存储池中的对象或使用纠删编码

200 OK

检索对象的副本。

云存储池中的对象,但尚未过渡到无法检索的状态

200 OK

检索对象的副本。

对象已过渡到无法检索的状态

403 ForbiddenInvalidObjectState

使用 "RestorEObject" 请求将对象还原到可检索状态。

正在从不可检索状态还原的对象

403 ForbiddenInvalidObjectState

等待RestorEObject请求完成。

对象已完全还原到云存储池

200 OK

检索对象的副本。

云存储池中的多部分或分段对象

如果您上传的是多部分对象或 StorageGRID 将一个大型对象拆分为多个区块,则 StorageGRID 会通过取样该对象的部分或区块来确定该对象是否在云存储池中可用。在某些情况下、GetObject请求可能会错误地返回 200 OK 对象的某些部分已过渡到无法检索的状态、或者对象的某些部分尚未还原。

在这些情况下:

  • GetObject请求可能会返回一些数据、但会在传输中途停止。

  • 可能会返回后续GetObject请求 403 Forbidden

GetObject和跨网格复制

如果您使用的是 …​ "网格联盟""跨网格复制" 已为分段启用、则S3客户端可以通过发出GetObject请求来验证对象的复制状态。响应包括特定于StorageGRID的 x-ntap-sg-cgr-replication-status 响应标头、它将具有以下值之一:

网格 复制状态

  • *SUCCESS *:复制成功。

  • *pending *:对象尚未复制。

  • 失败:复制失败并出现永久故障。用户必须解决此错误。

目标

REPRAM:对象已从源网格复制。

备注 StorageGRID 不支持 x-amz-replication-status 标题。