注意

本文档适用于 Ceph 的开发版本。

对象操作

对象是用于存储数据和元数据的容器。一个容器可以有许多对象,但对象名称必须是唯一的。此 API 允许客户端创建对象、设置访问控制和元数据、检索对象的数据和元数据以及删除对象。由于此 API 发出的请求与特定用户帐户中的信息相关,因此此 API 中的所有请求都必须经过身份验证,除非容器或对象的访问控制被特意设置为公开可访问(即允许匿名请求)。

创建/更新对象

要创建新对象,请使用 API 版本、帐户、容器名称和新对象的名称发出 PUT 请求。您必须对容器具有写入权限才能创建或更新对象。对象名称在容器内必须是唯一的。 PUT 请求不是幂等的,因此如果您不使用唯一名称,请求将更新对象。但是,您可以在对象名称中使用伪层次结构语法来区分它与同一名称但位于不同伪层次结构目录下的另一个对象。您可以在请求中包含访问控制标头和元数据标头。

语法

PUT /{api version}/{account}/{container}/{object} HTTP/1.1
     Host: {fqdn}
     X-Auth-Token: {auth-token}

请求头

ETag

描述:

对象内容的 MD5 哈希值。推荐。

类型:

String

必需:

Content-Type

描述:

对象包含的内容类型。

类型:

String

必需:

Transfer-Encoding

描述:

指示对象是否为更大聚合对象的一部分。

类型:

String

Valid Values:

chunked

必需:

复制对象

复制对象允许您在服务器端复制对象,这样您就不必下载它并将其上传到另一个容器/名称下。要将一个对象的内容复制到另一个对象,您可以使用 API 版本、帐户和容器名称发出 PUT 请求或 COPY 请求。对于 PUT 请求,在请求中使用目标容器和对象名称,并在请求标头中使用源容器和对象。对于 Copy 请求,在请求中使用源容器和对象,并在请求标头中使用目标容器和对象。您必须对容器具有写入权限才能复制对象。目标对象名称在容器内必须是唯一的。该请求不是幂等的,因此如果您不使用唯一名称,请求将更新目标对象。但是,您可以在对象名称中使用伪层次结构语法来区分目标对象与同一名称但位于不同伪层次结构目录下的源对象。您可以在请求中包含访问控制标头和元数据标头。

Syntax

PUT /{api version}/{account}/{dest-container}/{dest-object} HTTP/1.1
X-Copy-From: {source-container}/{source-object}
Host: {fqdn}
X-Auth-Token: {auth-token}

或者

COPY /{api version}/{account}/{source-container}/{source-object} HTTP/1.1
Destination: {dest-container}/{dest-object}

请求标头

X-Copy-From

描述:

PUT 请求一起使用,定义源容器/对象路径。

类型:

String

必需:

是,如果使用 PUT

Destination

描述:

COPY 请求一起使用,定义目标容器/对象路径。

类型:

String

必需:

是,如果使用 COPY

If-Modified-Since

描述:

仅当自源对象的 last_modified 属性的日期/时间以来已修改时才复制。

类型:

日期

必需:

If-Unmodified-Since

描述:

仅当自源对象的 last_modified 属性的日期/时间以来未修改时才复制。

类型:

日期

必需:

Copy-If-Match

描述:

仅当请求中的 ETag 与源对象的 ETag 匹配时才复制。

类型:

ETag。

必需:

Copy-If-None-Match

描述:

仅当请求中的 ETag 与源对象的 ETag 不匹配时才复制。

类型:

ETag。

必需:

删除对象

删除对象,请使用 API 版本、帐户、容器和对象名称发出 DELETE 请求。您必须对容器具有写入权限才能删除其中的对象。成功删除对象后,您将能够重新使用该对象名称。

语法

DELETE /{api version}/{account}/{container}/{object} HTTP/1.1
Host: {fqdn}
X-Auth-Token: {auth-token}

获取对象

要检索对象,请使用 API 版本、帐户、容器和对象名称发出 GET 请求。您必须对容器具有读取权限才能检索其中的对象。

语法

GET /{api version}/{account}/{container}/{object} HTTP/1.1
Host: {fqdn}
X-Auth-Token: {auth-token}

请求标头

range

描述:

要检索对象内容的子集,您可以指定一个字节范围。

类型:

日期

必需:

If-Modified-Since

描述:

仅当自源对象的 last_modified 属性的日期/时间以来已修改时才复制。

类型:

日期

必需:

If-Unmodified-Since

描述:

仅当自源对象的 last_modified 属性的日期/时间以来未修改时才复制。

类型:

日期

必需:

Copy-If-Match

描述:

仅当请求中的 ETag 与源对象的 ETag 匹配时才复制。

类型:

ETag。

必需:

Copy-If-None-Match

描述:

仅当请求中的 ETag 与源对象的 ETag 不匹配时才复制。

类型:

ETag。

必需:

响应头

Content-Range

描述:

对象内容子集的范围。仅当在请求中指定了范围标头字段时才返回。

获取对象元数据

要检索对象的元数据,请使用 API 版本、帐户、容器和对象名称发出 HEAD 请求。您必须对容器具有读取权限才能检索容器中对象的元数据。此请求返回与请求对象本身相同的标头信息,但不返回对象的数据。

语法

HEAD /{api version}/{account}/{container}/{object} HTTP/1.1
Host: {fqdn}
X-Auth-Token: {auth-token}

添加/更新对象元数据

要向对象添加元数据,请使用 API 版本、帐户、容器和对象名称发出 POST 请求。您必须对父容器具有写入权限才能添加或更新元数据。

语法

POST /{api version}/{account}/{container}/{object} HTTP/1.1
Host: {fqdn}
X-Auth-Token: {auth-token}

请求标头

X-Object-Meta-{key}

描述:

用户定义的元数据键,接受任意字符串值。

类型:

String

必需:

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入