4.5. Swift 对象操作


作为开发者,您可以通过 Ceph 对象网关通过 Swift 应用编程接口(API)执行对象操作。您可以列出、创建、更新和删除对象。您还可以添加或更新对象的元数据。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • RESTful 客户端。

4.5.1. Swift 对象操作

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

4.5.2. Swift 获取对象

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

语法

GET /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

请求 Headers

range
描述
要检索对象内容的子集,您可以指定一个字节范围。
Type
Date
必需
if-Modified-Since
描述
仅在自源对象的 last_modified 属性的日期和时间修改时才会复制。
Type
Date
必需
If-Unmodified-Since
描述
仅在不修改源对象的 last_modified 属性的日期和时间时复制。
Type
Date
必需
Copy-If-Match
描述
只有在请求中的 ETag 与源对象的 ETag 匹配时才复制。
Type
ETag
必需
Copy-If-None-Match
描述
只有在请求中的 ETag 不与源对象的 ETag 匹配时才复制。
Type
ETag
必需

响应标头

Content-Range
描述
对象内容子集的范围。仅在请求中指定范围标头字段时返回。

4.5.3. Swift 创建或更新对象

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

语法

PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

请求 Headers

ETag
描述
对象内容的 MD5 哈希。推荐选项。
Type
字符串
有效值
不适用
必需
Content-Type
描述
对象内容的 MD5 哈希。
Type
字符串
有效值
不适用
必需
Transfer-Encoding
描述
指明对象是更大聚合对象的一部分。
Type
字符串
有效值
chunked
必需

4.5.4. Swift 删除对象

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

语法

DELETE /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

4.5.5. Swift 复制对象

通过复制对象,您可以制作对象的服务器端副本,因此您不必下载对象并将其上传到其他容器下。要将一个对象的内容复制到另一个对象,您可以使用 API 版本、帐户和容器名称发出 PUT 请求或 COPY 请求。

对于 PUT 请求,请使用请求中的目标容器和对象名称,以及请求标头中的源容器和对象。

对于 Copy request,请使用请求中的源容器和对象,以及请求标头中的目标容器和对象。您必须具有容器的写入权限才能复制对象。目标对象名称在容器内必须是唯一的。请求不是幂等的,因此如果您不使用唯一名称,则请求将更新目标对象。如果目标名称位于不同的伪层次结构目录中,您可以使用伪层次结构语法,将目的地对象与同一名称的源对象区分开。您可以在请求中包含访问控制标头和元数据标头。

语法

PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
X-Copy-From: TENANT:SOURCE_CONTAINER/SOURCE_OBJECT
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

或者:

语法

COPY /API_VERSION/ACCOUNT/TENANT:SOURCE_CONTAINER/SOURCE_OBJECT HTTP/1.1
Destination: TENANT:DEST_CONTAINER/DEST_OBJECT

请求 Headers

X-Copy-From
描述
PUT 请求一起使用,以定义源容器/对象路径。
Type
字符串
必需
是,如果使用 PUT
目的地
描述
COPY 请求一起使用以定义目标容器/对象路径。
Type
字符串
必需
是,如果使用 COPY
If-Modified-Since
描述
仅在自源对象的 last_modified 属性的日期和时间修改时才会复制。
Type
Date
必需
If-Unmodified-Since
描述
仅在不修改源对象的 last_modified 属性的日期和时间时复制。
Type
Date
必需
Copy-If-Match
描述
只有在请求中的 ETag 与源对象的 ETag 匹配时才复制。
Type
ETag
必需
Copy-If-None-Match
描述
只有在请求中的 ETag 不与源对象的 ETag 匹配时才复制。
Type
ETag
必需

4.5.6. Swift 获取对象元数据

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

语法

HEAD /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

4.5.7. Swift 添加或更新对象元数据

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

语法

POST /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

请求 Headers

X-Object-Meta-KEY
描述
用户定义的 meta 数据键,它采用任意字符串值。
Type
字符串
必填
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.