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
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 创建或更新对象 复制链接链接已复制到粘贴板!
					若要创建新对象,请为 PUT 请求提供 API 版本、帐户、容器名称和新对象的名称。您必须具有容器的写入权限才能创建或更新对象。对象名称在容器内必须是唯一的。PUT 请求不是幂等的,因此如果您不使用唯一名称,则请求将更新对象。但是,您可以在对象名称中使用伪层次结构语法,如果它位于不同的伪层次结构目录中,将其与同一名称的另一个对象区分开来。您可以在请求中包含访问控制标头和元数据标头。
				
语法
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
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
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
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
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
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
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
 - 字符串
 - 必填
 - 否