对象存储 API¶
可发现性¶
如果已配置,则列出此版本的 OpenStack 对象存储 API 的激活功能。
列出此版本的 OpenStack 对象存储 API 的激活功能。
大部分信息是“公开的”,即对所有调用者可见。但是,某些配置和功能项仅供系统管理员保留。要访问此数据,必须将 swiftinfo_sig 和 swiftinfo_expires 查询参数添加到请求中。
正常响应代码:200 错误响应代码
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
swiftinfo_sig (可选) |
查询 |
字符串 |
一个基于哈希的消息认证码 (HMAC),用于启用对仅管理员信息的访问。要使用此参数,还需要 |
swiftinfo_expires (可选) |
查询 |
整数 |
|
响应示例¶
{
"swift": {
"version": "1.11.0"
},
"slo": {
"max_manifest_segments": 1000,
"max_manifest_size": 2097152,
"min_segment_size": 1
},
"staticweb": {},
"tempurl": {}
}
帐户¶
列出帐户的容器。创建、更新、显示和删除帐户元数据。有关帐户的更多信息和概念,请参阅 对象存储 API 概述。
显示帐户的详细信息并列出容器,按名称排序。
名称的排序顺序基于二进制比较,单个内置的排序序列通过使用 SQLite memcmp() 函数比较字符串数据,而与文本编码无关。请参阅 排序序列。
响应主体返回一个容器列表。默认响应 (text/plain) 每行返回一个容器。
如果您使用查询参数分页浏览一个长容器列表,如果返回列表中项目的数量小于请求 limit 值,则表示您已到达列表的末尾。如果返回列表中项目的数量等于 limit 值,则列表包含更多项目。
当请求一个容器列表并且没有容器时,响应行为会根据请求格式是文本、JSON 还是 XML 而变化。对于文本响应,您会得到 204,因为没有内容。但是,对于 JSON 或 XML 响应,您会得到一个包含指示空数组的内容的 200。
示例请求和响应
显示帐户详细信息并列出容器并请求 JSON 响应
curl -i $publicURL?format=json -X GET -H "X-Auth-Token: $token"
HTTP/1.1 200 OK Content-Length: 96 X-Account-Object-Count: 1 X-Timestamp: 1389453423.35964 X-Account-Meta-Subject: Literature X-Account-Bytes-Used: 14 X-Account-Container-Count: 2 Content-Type: application/json; charset=utf-8 Accept-Ranges: bytes X-Trans-Id: tx274a77a8975c4a66aeb24-0052d95365 X-Openstack-Request-Id: tx274a77a8975c4a66aeb24-0052d95365 Date: Fri, 17 Jan 2014 15:59:33 GMT
[ { "count": 0, "bytes": 0, "name": "janeausten", "last_modified": "2013-11-19T20:08:13.283452" }, { "count": 1, "bytes": 14, "name": "marktwain", "last_modified": "2016-04-29T16:23:50.460230" } ]
显示帐户详细信息并列出容器并请求 XML 响应
curl -i $publicURL?format=xml -X GET -H "X-Auth-Token: $token"
HTTP/1.1 200 OK Content-Length: 262 X-Account-Object-Count: 1 X-Timestamp: 1389453423.35964 X-Account-Meta-Subject: Literature X-Account-Bytes-Used: 14 X-Account-Container-Count: 2 Content-Type: application/xml; charset=utf-8 Accept-Ranges: bytes X-Trans-Id: tx69f60bc9f7634a01988e6-0052d9544b X-Openstack-Request-Id: tx69f60bc9f7634a01988e6-0052d9544b Date: Fri, 17 Jan 2014 16:03:23 GMT
<?xml version="1.0" encoding="UTF-8"?> <account name="my_account"> <container> <name>janeausten</name> <count>0</count> <bytes>0</bytes> <last_modified>2013-11-19T20:08:13.283452</last_modified> </container> <container> <name>marktwain</name> <count>1</count> <bytes>14</bytes> <last_modified>2016-04-29T16:23:50.460230</last_modified> </container> </account>
如果请求成功,该操作将返回以下状态代码之一
OK (200)。成功。响应主体列出了容器。No Content (204)。成功。响应主体显示没有容器。帐户没有容器,或者您正在使用marker、limit或end_marker查询参数分页浏览一个长名称列表,并且您已到达列表的末尾。
正常响应代码:200 错误响应代码:204,
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
limit (可选) |
查询 |
整数 |
对于整数值 n,将结果数量限制为 n。 |
marker (可选) |
查询 |
字符串 |
对于字符串值 x,将列表限制为名称大于 x 的项目。 |
end_marker (可选) |
查询 |
字符串 |
对于字符串值 x,将列表限制为名称小于 x 的项目。 |
format (可选) |
查询 |
字符串 |
响应格式。有效值是 |
prefix (可选) |
查询 |
字符串 |
仅返回具有此前缀的对象。与 |
delimiter (可选) |
查询 |
字符串 |
分隔符是一个用于拆分对象名称以呈现对象伪目录层次结构的单个字符。与 |
reverse (可选) |
查询 |
布尔值 |
默认情况下,列表按名称升序排序。如果您包含 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
Accept (可选) |
标头 |
字符串 |
与其使用 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
如果操作成功,响应主体的大小(以字节为单位)。发生错误时,此值为错误文本的长度。 |
X-Account-Meta-name (可选) |
标头 |
字符串 |
自定义帐户元数据项,其中 |
X-Account-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。 |
X-Account-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Account-Bytes-Used |
标头 |
整数 |
存储在对象存储中的帐户的总字节数。 |
X-Account-Container-Count |
标头 |
整数 |
容器的数量。 |
X-Account-Object-Count |
标头 |
整数 |
帐户中的对象数量。 |
X-Account-Storage-Policy-name-Bytes-Used |
标头 |
整数 |
存储在给定存储策略中的总字节数,其中 |
X-Account-Storage-Policy-name-Container-Count |
标头 |
整数 |
使用给定存储策略的帐户中的容器数量,其中 |
X-Account-Storage-Policy-name-Object-Count |
标头 |
整数 |
给定存储策略中的对象数量,其中 |
X-Account-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
如果存在,这是存储在帐户中的对象的总大小限制(以字节为单位)。此值通常由管理员设置。 |
X-Account-Access-Control (可选) |
标头 |
字符串 |
注意:X-Account-Access-Control 不受 Keystone 身份验证的支持。 帐户访问控制列表 (ACL),授予对帐户中的容器和对象的访问权限。如果没有 ACL,此操作不会返回此标头。有关更多信息,请参阅 帐户 ACL。 |
Content-Type |
标头 |
字符串 |
如果操作成功,此值为列表响应的 MIME 类型。MIME 类型由请求指定的列表格式确定,将是 |
count |
body |
整数 |
容器中的对象数量。 |
bytes |
body |
整数 |
存储在对象存储中的帐户的总字节数。 |
name |
body |
字符串 |
容器的名称。 |
创建、更新或删除帐户元数据。
要创建、更新或删除自定义元数据,请使用 X-Account-Meta-{name} 请求标头,其中 {name} 是元数据项的名称。
账户元数据操作与对象元数据操作的方式不同。根据您的 POST 账户元数据请求的内容,对象存储 API 会更新元数据,如下表所示
账户元数据操作
POST 请求头包含 |
结果 |
一个没有值的元数据键。 该元数据键已存在于账户中。 |
API 会从账户中删除该元数据项。 |
一个没有值的元数据键。 该元数据键尚未存在于账户中。 |
API 会忽略该元数据键。 |
一个元数据键值。 该元数据键已存在于账户中。 |
API 会更新账户的元数据键值。 |
一个元数据键值。 该元数据键尚未存在于账户中。 |
API 会添加该元数据键值对,或项,到账户中。 |
省略了一个或多个账户元数据项。 这些元数据项已存在于账户中。 |
API 不会更改现有的元数据项。 |
要删除元数据头,请为该头发送一个空值,例如对于 X-Account-Meta-Book 头。如果用于与对象存储通信的工具(例如旧版本的 cURL)不支持空头,请发送 X-Remove-Account- Meta-{name} 头,并附带任意值。例如,X-Remove-Account-Meta-Book: x。该操作会忽略该任意值。
注意
元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。
注意
元数据值必须使用 UTF-8 编码,然后在将其包含在头文件中之前进行 URL 编码。这直接违反了 HTTP/1.1 基本规则。
后续请求相同的键值对会覆盖现有值。
如果容器已经具有其他自定义元数据项,则请求创建、更新或删除元数据不会影响这些项。
此操作不接受请求体。
示例请求和响应
创建账户元数据
curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Book: MobyDick" -H "X-Account-Meta-Subject: Literature"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx8c2dd6aee35442a4a5646-0052d954fb X-Openstack-Request-Id: tx8c2dd6aee35442a4a5646-0052d954fb Date: Fri, 17 Jan 2014 16:06:19 GMT
更新账户元数据
curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Subject: AmericanLiterature"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx1439b96137364ab581156-0052d95532 X-Openstack-Request-Id: tx1439b96137364ab581156-0052d95532 Date: Fri, 17 Jan 2014 16:07:14 GMT
删除账户元数据
curl -i $publicURL -X POST -H "X-Auth-Token: $token" -H "X-Remove-Account-Meta-Subject: x"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx411cf57701424da99948a-0052d9556f X-Openstack-Request-Id: tx411cf57701424da99948a-0052d9556f Date: Fri, 17 Jan 2014 16:08:15 GMT
如果请求成功,该操作将返回 No Content (204) 响应代码。
要确认您的更改,请发出显示账户元数据请求。
错误响应代码:204,
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Account-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。 |
X-Account-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。 |
X-Account-Meta-name (可选) |
标头 |
字符串 |
账户元数据。 |
X-Remove-Account-name (可选) |
标头 |
字符串 |
删除名为 |
X-Account-Access-Control (可选) |
标头 |
字符串 |
注意:X-Account-Access-Control 不受 Keystone 身份验证的支持。 设置授予账户中容器和对象访问权限的账户访问控制列表 (ACL)。有关更多信息,请参阅 账户 ACL。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
显示账户的元数据。
账户的元数据包括
容器数量
对象数量
存储在对象存储中用于该账户的总字节数
由于存储系统可以存储大量数据,因此在将总字节数响应表示为整数时要小心。如果您的平台支持该基本类型,请尽可能将其转换为 64 位无符号整数。
请勿在此请求中包含元数据头。
显示账户元数据请求
curl -i $publicURL -X HEAD -H "X-Auth-Token: $token"
HTTP/1.1 204 No Content
Content-Length: 0
X-Account-Object-Count: 1
X-Account-Meta-Book: MobyDick
X-Timestamp: 1389453423.35964
X-Account-Bytes-Used: 14
X-Account-Container-Count: 2
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
X-Trans-Id: txafb3504870144b8ca40f7-0052d955d4
X-Openstack-Request-Id: txafb3504870144b8ca40f7-0052d955d4
Date: Fri, 17 Jan 2014 16:09:56 GMT
如果账户或身份验证令牌无效,则该操作将返回 Unauthorized (401) 响应代码。
错误响应代码:204,401,
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
X-Account-Meta-name (可选) |
标头 |
字符串 |
自定义帐户元数据项,其中 |
X-Account-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。 |
X-Account-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Account-Bytes-Used |
标头 |
整数 |
存储在对象存储中的帐户的总字节数。 |
X-Account-Object-Count |
标头 |
整数 |
帐户中的对象数量。 |
X-Account-Container-Count |
标头 |
整数 |
容器的数量。 |
X-Account-Storage-Policy-name-Bytes-Used |
标头 |
整数 |
存储在给定存储策略中的总字节数,其中 |
X-Account-Storage-Policy-name-Container-Count |
标头 |
整数 |
使用给定存储策略的帐户中的容器数量,其中 |
X-Account-Storage-Policy-name-Object-Count |
标头 |
整数 |
给定存储策略中的对象数量,其中 |
X-Account-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
如果存在,这是存储在帐户中的对象的总大小限制(以字节为单位)。此值通常由管理员设置。 |
X-Account-Access-Control (可选) |
标头 |
字符串 |
注意:X-Account-Access-Control 不受 Keystone 身份验证的支持。 帐户访问控制列表 (ACL),授予对帐户中的容器和对象的访问权限。如果没有 ACL,此操作不会返回此标头。有关更多信息,请参阅 帐户 ACL。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
当经销商管理员发出此请求时,会删除指定的账户。账户仅由 (1) 具有经销商管理员级别身份验证令牌 (2) 向要删除的账户的代理服务器发送 DELETE 请求,以及 (3) 该代理服务器具有将“allow_account_management”配置选项设置为 true 来删除。
请注意,发出 DELETE 请求只是将账户标记为稍后删除,如链接中概述:https://docs.openstack.org/swift/2025.2/overview_reaper.html。
在执行此操作时要小心,因为删除账户是一项单向操作,无法轻易恢复。重要的是要注意,在 OpenStack 环境中,您应该在从 Keystone 中删除项目/租户后删除账户。
curl -i $publicURL -X DELETE -H 'X-Auth-Token: $<reseller admin token>'
HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Account-Status: Deleted
X-Trans-Id: tx91ce60a640cc42eca198a-006128c180
X-Openstack-Request-Id: tx91ce60a640cc42eca198a-006128c180
Date: Fri, 27 Aug 2021 11:42:08 GMT
如果账户或身份验证令牌无效,则该操作将返回 Unauthorized (401)。如果您尝试使用非管理员令牌删除账户,将返回 403 Forbidden 响应代码。如果您提供不存在的账户或无效的 URL,将返回 404 Not Found 响应代码。
错误响应代码:204,401,403,404。
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
容器¶
列出容器中的对象。创建、显示容器的详细信息以及删除容器。创建、更新、显示和删除容器元数据。有关容器的更多信息和概念,请参阅 对象存储 API 概述。
显示容器的详细信息并按名称列出容器中的对象。
在请求中指定查询参数以过滤列表并返回对象的子集。省略查询参数以返回存储在容器中的对象列表,最多 10,000 个名称。最大值 10,000 是可配置的。要查看集群的值,请发出 GET /info 请求。
示例请求和响应
OK (200)。成功。响应体列出了对象。No Content (204)。成功。响应体未显示任何对象。容器中没有对象,或者您正在使用marker、limit或end_marker查询参数分页浏览一个很长的对象列表,并且您已到达列表的末尾。
如果容器不存在,则该调用将返回 Not Found (404) 响应代码。
正常响应代码:200, 204
错误响应代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
limit (可选) |
查询 |
整数 |
对于整数值 n,将结果数量限制为 n。 |
marker (可选) |
查询 |
字符串 |
对于字符串值 x,将列表限制为名称大于 x 的项目。 |
end_marker (可选) |
查询 |
字符串 |
对于字符串值 x,将列表限制为名称小于 x 的项目。 |
prefix (可选) |
查询 |
字符串 |
仅返回具有此前缀的对象。与 |
format (可选) |
查询 |
字符串 |
响应格式。有效值是 |
delimiter (可选) |
查询 |
字符串 |
分隔符是一个用于拆分对象名称以呈现对象伪目录层次结构的单个字符。与 |
path (可选) |
查询 |
字符串 |
对于字符串值,返回嵌套在伪路径中的对象名称。请使用 |
reverse (可选) |
查询 |
布尔值 |
默认情况下,列表按名称升序排序。如果您包含 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
Accept (可选) |
标头 |
字符串 |
与其使用 |
X-Container-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。 |
X-Container-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
X-Storage-Policy (可选) |
标头 |
字符串 |
在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Container-Meta-name |
标头 |
字符串 |
自定义容器元数据项,其中 |
Content-Length |
标头 |
字符串 |
如果操作成功,响应主体的大小(以字节为单位)。发生错误时,此值为错误文本的长度。 |
X-Container-Object-Count |
标头 |
整数 |
对象数量。 |
X-Container-Bytes-Used |
标头 |
整数 |
使用的总字节数。 |
Accept-Ranges |
标头 |
字符串 |
对象接受的范围类型。 |
X-Container-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。 |
X-Container-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。 |
X-Container-Meta-Quota-Count (可选) |
标头 |
字符串 |
容器的最大对象计数。如果未设置,则此头不会在此操作中返回。 |
X-Container-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
容器的最大大小(以字节为单位)。如果未设置,则此头不会在此操作中返回。 |
X-Storage-Policy (可选) |
标头 |
字符串 |
在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。 |
X-Container-Read (可选) |
标头 |
字符串 |
授予读取访问权限的 ACL。如果没有 ACL,则此头不会在此操作中返回。有关更多信息,请参阅 容器 ACL。 |
X-Container-Write (可选) |
标头 |
字符串 |
授予写入访问权限的 ACL。如果没有 ACL,则此头不会在此操作中返回。有关更多信息,请参阅 容器 ACL。 |
X-Container-Sync-Key (可选) |
标头 |
字符串 |
容器同步的密钥。 |
X-Container-Sync-To (可选) |
标头 |
字符串 |
容器同步的目标。如果未设置,则此头不会在此操作中返回。 |
X-Versions-Location (可选) |
标头 |
字符串 |
如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制。 |
X-History-Location (可选) |
标头 |
字符串 |
如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Content-Type |
标头 |
字符串 |
如果操作成功,此值为列表响应的 MIME 类型。MIME 类型由请求指定的列表格式确定,将是 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
hash |
body |
字符串 |
对象的内容的 MD5 校验和值。 |
last_modified |
body |
字符串 |
上次修改对象的日期和时间。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss±hh:mm
例如, 如果包含, |
content_type |
body |
字符串 |
对象的 content type。 |
bytes |
body |
整数 |
存储在对象存储中用于该容器的总字节数。 |
name |
body |
字符串 |
对象名称。 |
symlink_path |
body |
字符串 |
此字段仅在对象是符号链接时存在。这是符号链接对象的的目标路径。 |
响应示例 format=json¶
HTTP/1.1 200 OK
Content-Length: 341
X-Container-Object-Count: 2
Accept-Ranges: bytes
X-Container-Meta-Book: TomSawyer
X-Timestamp: 1389727543.65372
X-Container-Bytes-Used: 26
Content-Type: application/json; charset=utf-8
X-Trans-Id: tx26377fe5fab74869825d1-0052d6bdff
X-Openstack-Request-Id: tx26377fe5fab74869825d1-0052d6bdff
Date: Wed, 15 Jan 2014 16:57:35 GMT
[
{
"hash": "451e372e48e0f6b1114fa0724aa79fa1",
"last_modified": "2014-01-15T16:41:49.390270",
"bytes": 14,
"name": "goodbye",
"content_type": "application/octet-stream"
},
{
"hash": "ed076287532e86365e841e92bfc50d8c",
"last_modified": "2014-01-15T16:37:43.427570",
"bytes": 12,
"name": "helloworld",
"content_type": "application/octet-stream"
}
]
响应示例 format=xml¶
HTTP/1.1 200 OK
Content-Length: 500
X-Container-Object-Count: 2
Accept-Ranges: bytes
X-Container-Meta-Book: TomSawyer
X-Timestamp: 1389727543.65372
X-Container-Bytes-Used: 26
Content-Type: application/xml; charset=utf-8
X-Trans-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
X-Openstack-Request-Id: txc75ea9a6e66f47d79e0c5-0052d6be76
Date: Wed, 15 Jan 2014 16:59:35 GMT
<?xml version="1.0" encoding="UTF-8"?>
<container name="marktwain">
<object>
<name>goodbye</name>
<hash>451e372e48e0f6b1114fa0724aa79fa1</hash>
<bytes>14</bytes>
<content_type>application/octet-stream</content_type>
<last_modified>2014-01-15T16:41:49.390270</last_modified>
</object>
<object>
<name>helloworld</name>
<hash>ed076287532e86365e841e92bfc50d8c</hash>
<bytes>12</bytes>
<content_type>application/octet-stream</content_type>
<last_modified>2014-01-15T16:37:43.427570</last_modified>
</object>
</container>
创建容器。
您无需在发出 PUT 操作之前检查容器是否已存在,因为该操作是幂等的:它会创建容器或更新现有容器,具体取决于情况。
要创建、更新或删除自定义元数据项,请使用 X -Container-Meta-{name} 头,其中 {name} 是元数据项的名称。
注意
元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。
注意
元数据值必须使用 UTF-8 编码,然后在将其包含在头文件中之前进行 URL 编码。这直接违反了 HTTP/1.1 基本规则。
示例请求和响应
创建不含元数据的容器
curl -i $publicURL/steven -X PUT -H "Content-Length: 0" -H "X-Auth-Token: $token"
HTTP/1.1 201 Created Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx7f6b7fa09bc2443a94df0-0052d58b56 X-Openstack-Request-Id: tx7f6b7fa09bc2443a94df0-0052d58b56 Date: Tue, 14 Jan 2014 19:09:10 GMT
创建包含元数据的容器
curl -i $publicURL/marktwain -X PUT -H "X-Auth-Token: $token" -H "X-Container-Meta-Book: TomSawyer"
HTTP/1.1 201 Created Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx06021f10fc8642b2901e7-0052d58f37 X-Openstack-Request-Id: tx06021f10fc8642b2901e7-0052d58f37 Date: Tue, 14 Jan 2014 19:25:43 GMT
创建一个具有 ACL 的容器,允许任何人获取 marktwain 容器中的对象
curl -i $publicURL/marktwain -X PUT -H "X-Auth-Token: $token" -H "X-Container-Read: .r:*"
HTTP/1.1 201 Created Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx06021f10fc8642b2901e7-0052d58f37 X-Openstack-Request-Id: tx06021f10fc8642b2901e7-0052d58f37 Date: Tue, 14 Jan 2014 19:25:43 GMT
正常响应代码:201, 202
错误响应代码:400, 404, 507
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Container-Read (可选) |
标头 |
字符串 |
设置授予容器读取访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 GET 或 HEAD 操作对象在容器中或对容器本身执行 GET 或 HEAD 操作的能力。 ACL 的格式和范围取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL。 |
X-Container-Write (可选) |
标头 |
字符串 |
设置授予容器写入访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 PUT、POST 和 DELETE 操作对象在容器中的能力。它不授予对容器元数据的写入访问权限。 ACL 的格式取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL。 |
X-Container-Sync-To (可选) |
标头 |
字符串 |
设置容器同步的目标地址。与 |
X-Container-Sync-Key (可选) |
标头 |
字符串 |
设置容器同步的密钥。如果您删除密钥,同步将停止。有关更多信息,请参阅 容器到容器同步 |
X-Versions-Location (可选) |
标头 |
字符串 |
URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 |
X-History-Location (可选) |
标头 |
字符串 |
URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 |
X-Container-Meta-name (可选) |
标头 |
字符串 |
容器元数据,其中 |
X-Container-Meta-Access-Control-Allow-Origin (可选) |
标头 |
字符串 |
允许进行跨域请求的源 URL,用空格分隔。此头部仅适用于容器,并且应用此头部的容器内的所有对象都针对允许的源 URL 启用 CORS。浏览器(用户代理)通常会发出一个 预检请求,这是一个 OPTIONS 调用,用于验证源是否允许发出请求。如果源 URL 列在此头部参数中,对象存储服务将返回 200;如果源 URL 不允许发出跨域请求,则返回 401。一旦返回 200,浏览器将向对象存储服务发出第二个请求以检索启用了 CORS 的对象。 |
X-Container-Meta-Access-Control-Max-Age (可选) |
标头 |
字符串 |
预检结果的允许最大时间,以秒为单位。浏览器可能会发出 OPTIONS 调用以验证源是否允许发出请求。将值设置为请求接收时间后的整数秒数。 |
X-Container-Meta-Access-Control-Expose-Headers (可选) |
标头 |
字符串 |
对象存储服务暴露给浏览器的头部(技术上,通过
|
X-Container-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
设置容器的最大大小,以字节为单位。这些值通常由管理员设置。当对象 PUT 操作超过此配额值时,返回 413 响应(请求实体过大)。此值不会立即生效。有关更多信息,请参阅 容器配额。 |
X-Container-Meta-Quota-Count (可选) |
标头 |
字符串 |
设置容器的最大对象数量。这些值通常由管理员设置。当对象 PUT 操作超过此配额值时,返回 413 响应(请求实体过大)。此值不会立即生效。有关更多信息,请参阅 容器配额。 |
X-Container-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。 |
X-Container-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
X-Storage-Policy (可选) |
标头 |
字符串 |
在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
创建、更新或删除容器的自定义元数据。
要创建、更新或删除自定义元数据项,请使用 X -Container-Meta-{name} 头,其中 {name} 是元数据项的名称。
注意
元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。
注意
元数据值必须使用 UTF-8 编码,然后在将其包含在头文件中之前进行 URL 编码。这直接违反了 HTTP/1.1 基本规则。
后续对相同键值对的请求将覆盖前一个值。
要删除容器元数据,请为该头部发送一个空值,例如对于 X-Container-Meta-Book 头部。如果用于与对象存储通信的工具(例如旧版本的 cURL)不支持空头部,请发送 X-Remove- Container-Meta-{name} 头部,并附带任意值。例如,X-Remove-Container-Meta-Book: x。该操作将忽略任意值。
如果容器已经具有其他自定义元数据项,则请求创建、更新或删除元数据不会影响这些项。
示例请求和响应
创建容器元数据
curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Author: MarkTwain" -H "X-Container-Meta-Web-Directory-Type: text/directory" -H "X-Container-Meta-Century: Nineteenth"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx05dbd434c651429193139-0052d82635 X-Openstack-Request-Id: tx05dbd434c651429193139-0052d82635 Date: Thu, 16 Jan 2014 18:34:29 GMT
更新容器元数据
curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Author: SamuelClemens"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: txe60c7314bf614bb39dfe4-0052d82653 X-Openstack-Request-Id: txe60c7314bf614bb39dfe4-0052d82653 Date: Thu, 16 Jan 2014 18:34:59 GMT
删除容器元数据
curl -i $publicURL/marktwain -X POST -H "X-Auth-Token: $token" -H "X-Remove-Container-Meta-Century: x"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx7997e18da2a34a9e84ceb-0052d826d0 X-Openstack-Request-Id: tx7997e18da2a34a9e84ceb-0052d826d0 Date: Thu, 16 Jan 2014 18:37:04 GMT
如果请求成功,该操作将返回 No Content (204) 响应代码。
要确认您的更改,请发出显示容器元数据请求。
正常响应代码:204
错误响应代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Container-Read (可选) |
标头 |
字符串 |
设置授予容器读取访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 GET 或 HEAD 操作对象在容器中或对容器本身执行 GET 或 HEAD 操作的能力。 ACL 的格式和范围取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL。 |
X-Remove-Container-name (可选) |
标头 |
字符串 |
删除名为 |
X-Container-Write (可选) |
标头 |
字符串 |
设置授予容器写入访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 PUT、POST 和 DELETE 操作对象在容器中的能力。它不授予对容器元数据的写入访问权限。 ACL 的格式取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL。 |
X-Container-Sync-To (可选) |
标头 |
字符串 |
设置容器同步的目标地址。与 |
X-Container-Sync-Key (可选) |
标头 |
字符串 |
设置容器同步的密钥。如果您删除密钥,同步将停止。有关更多信息,请参阅 容器到容器同步 |
X-Versions-Location (可选) |
标头 |
字符串 |
URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 |
X-History-Location (可选) |
标头 |
字符串 |
URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 |
X-Remove-Versions-Location (可选) |
标头 |
字符串 |
设置为任意值以禁用版本控制。请注意,这将禁用通过 |
X-Remove-History-Location (可选) |
标头 |
字符串 |
设置为任意值以禁用版本控制。请注意,这将禁用通过 |
X-Container-Meta-name (可选) |
标头 |
字符串 |
容器元数据,其中 |
X-Container-Meta-Access-Control-Allow-Origin (可选) |
标头 |
字符串 |
允许进行跨域请求的源 URL,用空格分隔。此头部仅适用于容器,并且应用此头部的容器内的所有对象都针对允许的源 URL 启用 CORS。浏览器(用户代理)通常会发出一个 预检请求,这是一个 OPTIONS 调用,用于验证源是否允许发出请求。如果源 URL 列在此头部参数中,对象存储服务将返回 200;如果源 URL 不允许发出跨域请求,则返回 401。一旦返回 200,浏览器将向对象存储服务发出第二个请求以检索启用了 CORS 的对象。 |
X-Container-Meta-Access-Control-Max-Age (可选) |
标头 |
字符串 |
预检结果的允许最大时间,以秒为单位。浏览器可能会发出 OPTIONS 调用以验证源是否允许发出请求。将值设置为请求接收时间后的整数秒数。 |
X-Container-Meta-Access-Control-Expose-Headers (可选) |
标头 |
字符串 |
对象存储服务暴露给浏览器的头部(技术上,通过
|
X-Container-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
设置容器的最大大小,以字节为单位。这些值通常由管理员设置。当对象 PUT 操作超过此配额值时,返回 413 响应(请求实体过大)。此值不会立即生效。有关更多信息,请参阅 容器配额。 |
X-Container-Meta-Quota-Count (可选) |
标头 |
字符串 |
设置容器的最大对象数量。这些值通常由管理员设置。当对象 PUT 操作超过此配额值时,返回 413 响应(请求实体过大)。此值不会立即生效。有关更多信息,请参阅 容器配额。 |
X-Container-Meta-Web-Directory-Type (可选) |
标头 |
字符串 |
设置目录标记对象的 content-type。如果未设置此头部,则默认值为 |
X-Container-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。 |
X-Container-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
显示容器元数据,包括存储在容器中的对象数量和所有对象的总字节数。
显示容器元数据请求
curl -i $publicURL/marktwain -X HEAD -H "X-Auth-Token: $token"
HTTP/1.1 204 No Content
Content-Length: 0
X-Container-Object-Count: 1
Accept-Ranges: bytes
X-Container-Meta-Book: TomSawyer
X-Timestamp: 1389727543.65372
X-Container-Meta-Author: SamuelClemens
X-Container-Bytes-Used: 14
Content-Type: text/plain; charset=utf-8
X-Trans-Id: tx0287b982a268461b9ec14-0052d826e2
X-Openstack-Request-Id: tx0287b982a268461b9ec14-0052d826e2
Date: Thu, 16 Jan 2014 18:37:22 GMT
如果请求成功,该操作将返回 No Content (204) 响应代码。
正常响应代码:204
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
X-Container-Meta-name |
标头 |
字符串 |
自定义容器元数据项,其中 |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
X-Container-Object-Count |
标头 |
整数 |
对象数量。 |
X-Container-Bytes-Used |
标头 |
整数 |
使用的总字节数。 |
X-Container-Write (可选) |
标头 |
字符串 |
授予写入访问权限的 ACL。如果没有 ACL,则此头不会在此操作中返回。有关更多信息,请参阅 容器 ACL。 |
X-Container-Meta-Quota-Bytes (可选) |
标头 |
字符串 |
容器的最大大小(以字节为单位)。如果未设置,则此头不会在此操作中返回。 |
X-Container-Meta-Quota-Count (可选) |
标头 |
字符串 |
容器的最大对象计数。如果未设置,则此头不会在此操作中返回。 |
Accept-Ranges |
标头 |
字符串 |
对象接受的范围类型。 |
X-Container-Read (可选) |
标头 |
字符串 |
授予读取访问权限的 ACL。如果没有 ACL,则此头不会在此操作中返回。有关更多信息,请参阅 容器 ACL。 |
X-Container-Meta-Access-Control-Expose-Headers (可选) |
标头 |
字符串 |
对象存储服务暴露给浏览器的头部(技术上,通过
|
X-Container-Meta-Temp-URL-Key (可选) |
标头 |
字符串 |
临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。 |
X-Container-Meta-Temp-URL-Key-2 (可选) |
标头 |
字符串 |
临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Container-Meta-Access-Control-Allow-Origin (可选) |
标头 |
字符串 |
允许进行跨域请求的源 URL,用空格分隔。此头部仅适用于容器,并且应用此头部的容器内的所有对象都针对允许的源 URL 启用 CORS。浏览器(用户代理)通常会发出一个 预检请求,这是一个 OPTIONS 调用,用于验证源是否允许发出请求。如果源 URL 列在此头部参数中,对象存储服务将返回 200;如果源 URL 不允许发出跨域请求,则返回 401。一旦返回 200,浏览器将向对象存储服务发出第二个请求以检索启用了 CORS 的对象。 |
X-Container-Meta-Access-Control-Max-Age (可选) |
标头 |
字符串 |
预检结果的允许最大时间,以秒为单位。浏览器可能会发出 OPTIONS 调用以验证源是否允许发出请求。将值设置为请求接收时间后的整数秒数。 |
X-Container-Sync-Key (可选) |
标头 |
字符串 |
容器同步的密钥。 |
X-Container-Sync-To (可选) |
标头 |
字符串 |
容器同步的目标。如果未设置,则此头不会在此操作中返回。 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Versions-Location (可选) |
标头 |
字符串 |
如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制。 |
X-History-Location (可选) |
标头 |
字符串 |
如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制。 |
X-Storage-Policy (可选) |
标头 |
字符串 |
在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。 |
删除空容器。
除非容器为空,否则此操作将失败。空容器没有对象。
删除 steven 容器
curl -i $publicURL/steven -X DELETE -H "X-Auth-Token: $token"
如果容器不存在,则响应为
HTTP/1.1 404 Not Found
Content-Length: 70
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx4d728126b17b43b598bf7-0052d81e34
X-Openstack-Request-Id: tx4d728126b17b43b598bf7-0052d81e34
Date: Thu, 16 Jan 2014 18:00:20 GMT
如果容器存在且删除成功,则响应为
HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: text/html; charset=UTF-8
X-Trans-Id: txf76c375ebece4df19c84c-0052d81f14
X-Openstack-Request-Id: txf76c375ebece4df19c84c-0052d81f14
Date: Thu, 16 Jan 2014 18:04:04 GMT
如果容器存在但非空,则响应为
HTTP/1.1 409 Conflict
Content-Length: 95
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx7782dc6a97b94a46956b5-0052d81f6b
X-Openstack-Request-Id: tx7782dc6a97b94a46956b5-0052d81f6b
Date: Thu, 16 Jan 2014 18:05:31 GMT
<html>
<h1>Conflict
</h1>
<p>There was a conflict when trying to complete your request.
</p>
</html>
正常响应代码:204
错误响应代码:404、409
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
对象¶
创建、替换、显示对象详细信息和删除对象。使用新的或不同的名称从另一个对象复制对象。更新对象元数据。有关更多信息和关于对象的基本概念,请参阅 对象存储 API 概述 和 大对象。
下载对象内容并获取对象元数据。
此操作在响应头部中返回对象元数据,并在响应主体中返回对象内容。
如果这是一个大对象,则响应主体包含分段对象的连接内容。要获取静态大对象的清单而不是连接的分段对象,请使用 multipart-manifest 查询参数。
示例请求和响应
显示
marktwain容器中goodbye对象的详细信息curl -i $publicURL/marktwain/goodbye -X GET -H "X-Auth-Token: $token"
HTTP/1.1 200 OK Content-Length: 14 Accept-Ranges: bytes Last-Modified: Wed, 15 Jan 2014 16:41:49 GMT Etag: 451e372e48e0f6b1114fa0724aa79fa1 X-Timestamp: 1389804109.39027 X-Object-Meta-Orig-Filename: goodbyeworld.txt Content-Type: application/octet-stream X-Trans-Id: tx8145a190241f4cf6b05f5-0052d82a34 X-Openstack-Request-Id: tx8145a190241f4cf6b05f5-0052d82a34 Date: Thu, 16 Jan 2014 18:51:32 GMT Goodbye World!
显示
janeausten容器中不存在的goodbye对象的详细信息curl -i $publicURL/janeausten/goodbye -X GET -H "X-Auth-Token: $token"
HTTP/1.1 404 Not Found Content-Length: 70 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx073f7cbb850c4c99934b9-0052d82b04 X-Openstack-Request-Id: tx073f7cbb850c4c99934b9-0052d82b04 Date: Thu, 16 Jan 2014 18:55:00 GMT <html> <h1>Not Found </h1> <p>The resource could not be found. </p> </html>
对于指定超过的任何范围 GET 请求,该操作将返回 Range Not Satisfiable (416) 响应代码
五十个范围。
三个重叠的范围。
八个非递增的范围。
正常响应代码:200
错误响应代码:416、404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
temp_url_sig |
查询 |
字符串 |
与临时 URL 一起使用,使用 HMAC-SHA1 加密签名对请求进行签名,该签名定义了允许的 HTTP 方法、过期日期、对象完整路径和临时 URL 的密钥。有关临时 URL 的更多信息,请参阅 临时 URL 中间件。 |
temp_url_expires |
查询 |
整数 |
临时 URL 签名的过期日期和时间,以 UNIX Epoch 时间戳格式 或 ISO 8601 UTC 时间戳 格式表示。例如, |
filename (可选) |
查询 |
字符串 |
覆盖默认文件名。对象存储为基于对象名称的 GET 临时 URL 生成默认文件名。对象存储在 |
multipart-manifest (可选) |
查询 |
字符串 |
如果您包含 |
symlink (可选) |
查询 |
字符串 |
如果您包含 |
Range (可选) |
标头 |
字符串 |
要获取的内容范围。您可以使用
|
If-Match (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
If-None-Match (可选) |
标头 |
字符串 |
客户端之前从资源获得的一个或多个实体可以验证这些实体中的任何一个是否当前有效,方法是在 |
If-Modified-Since (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
If-Unmodified-Since (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
响应主体中对象内容的长度,以字节为单位。 |
Content-Type |
标头 |
字符串 |
如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。 |
X-Object-Meta-name (可选) |
标头 |
字符串 |
如果存在,则为自定义对象元数据项,其中 |
Content-Disposition (可选) |
标头 |
字符串 |
如果存在,则指定浏览器覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。如果未设置,则此操作不会返回此头部。 |
Content-Encoding (可选) |
标头 |
字符串 |
如果存在,则为 |
X-Delete-At (可选) |
标头 |
整数 |
如果存在,则指定系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如, |
Accept-Ranges |
标头 |
字符串 |
对象接受的范围类型。 |
X-Object-Manifest (可选) |
标头 |
字符串 |
如果存在,则这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 |
Last-Modified |
标头 |
字符串 |
对象创建或其元数据更改的日期和时间。日期和时间格式如下所示: 时间始终为 UTC。 |
ETag |
标头 |
字符串 |
对于小于 5 GB 的对象,此值为对象内容的 MD5 校验和。该值不带引号。对于清单对象,此值为清单中每个分段的 ETag 值的串联字符串的 MD5 校验和,而不是下载内容本身的 MD5 校验和。此外,该值用双引号括起来。强烈建议计算接收到的响应体的 MD5 校验和,并将其与 ETag 头部中的值进行比较。如果它们不同,则内容已损坏,因此请重试该操作。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Static-Large-Object |
标头 |
布尔值 |
如果此对象是静态大对象清单对象,则设置为 |
X-Symlink-Target (可选) |
标头 |
字符串 |
如果存在,则这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。 |
X-Symlink-Target-Account (可选) |
标头 |
字符串 |
如果存在,并且存在 |
响应示例¶
请参阅上面的示例。
创建带有数据内容和元数据的对象,或替换现有对象及其数据内容和元数据。
PUT 操作始终创建一个对象。如果在此操作中使用现有对象,则替换现有对象和元数据,而不是修改对象。因此,此操作返回 Created (201) 响应代码。
如果使用此操作复制清单对象,则新对象是一个普通对象,而不是清单的副本。相反,它是所有分段对象的串联。这意味着您无法复制大于 5 GB 的对象。
请注意,提供程序可能限制了对象名称中允许的字符。任何名称限制都通过 /info 可发现性响应中的 name_check 键公开。无论 name_check 限制如何,名称必须是 URL 引用的 UTF-8 编码。
要创建自定义元数据,请使用 X-Object-Meta-name 头部,其中 name 是元数据项的名称。
注意
元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。
示例请求和响应
创建对象
curl -i $publicURL/janeausten/helloworld.txt -X PUT -d "Hello" -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
HTTP/1.1 201 Created Last-Modified: Fri, 17 Jan 2014 17:28:35 GMT Content-Length: 0 Etag: 8b1a9953c4611296a827abf8c47804d7 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx4d5e4f06d357462bb732f-0052d96843 X-Openstack-Request-Id: tx4d5e4f06d357462bb732f-0052d96843 Date: Fri, 17 Jan 2014 17:28:35 GMT
替换对象
curl -i $publicURL/janeausten/helloworld.txt -X PUT -d "Hola" -H "X-Auth-Token: $token"
HTTP/1.1 201 Created Last-Modified: Fri, 17 Jan 2014 17:28:35 GMT Content-Length: 0 Etag: f688ae26e9cfa3ba6235477831d5122e Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx4d5e4f06d357462bb732f-0052d96843 X-Openstack-Request-Id: tx4d5e4f06d357462bb732f-0052d96843 Date: Fri, 17 Jan 2014 17:28:35 GMT
Created (201) 响应代码表示写入成功。
如果对象的容器尚不存在,则操作返回 404 Not Found 响应代码。
如果请求超时,则操作返回 Request Timeout (408) 响应代码。
Length Required (411) 响应代码表示缺少 Transfer-Encoding 或 Content-Length 请求头部。
如果写入到对象存储的数据的 MD5 校验和与可选的 ETag 值不匹配,则操作返回 Unprocessable Entity (422) 响应代码。
正常响应代码:201
错误响应代码:404、408、411、422
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
multipart-manifest (可选) |
查询 |
字符串 |
如果您包含 |
temp_url_sig |
查询 |
字符串 |
与临时 URL 一起使用,使用 HMAC-SHA1 加密签名对请求进行签名,该签名定义了允许的 HTTP 方法、过期日期、对象完整路径和临时 URL 的密钥。有关临时 URL 的更多信息,请参阅 临时 URL 中间件。 |
temp_url_expires |
查询 |
整数 |
临时 URL 签名的过期日期和时间,以 UNIX Epoch 时间戳格式 或 ISO 8601 UTC 时间戳 格式表示。例如, |
X-Object-Manifest (可选) |
标头 |
字符串 |
设置为指定这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
Content-Length (可选) |
标头 |
整数 |
设置为对象内容的长度(即请求体的字节长度)。如果使用分块传输编码,则不要设置。 |
Transfer-Encoding (可选) |
标头 |
字符串 |
设置为 |
Content-Type (可选) |
标头 |
字符串 |
设置对象的 MIME 类型。 |
X-Detect-Content-Type (可选) |
标头 |
布尔值 |
如果设置为 |
X-Copy-From (可选) |
标头 |
字符串 |
如果设置,则这是用于通过复制 |
X-Copy-From-Account (可选) |
标头 |
字符串 |
指定复制对象的帐户名称。如果未指定,则对象将复制到拥有新对象的帐户(即路径中的帐户)。 |
ETag (可选) |
标头 |
字符串 |
请求体的 MD5 校验和值。例如,对象内容的 MD5 校验和值。对于清单对象,此值是清单中每个分段的 ETag 值的串联字符串的 MD5 校验和。强烈建议计算 MD5 校验和值并将其包含在请求中。这使对象存储 API 能够检查上传的完整性。该值不带引号。 |
Content-Disposition (可选) |
标头 |
字符串 |
如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。 |
Content-Encoding (可选) |
标头 |
字符串 |
如果设置,则为 |
X-Delete-At (可选) |
标头 |
整数 |
系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如, |
X-Delete-After (可选) |
标头 |
整数 |
系统移除对象后的秒数。该值应为正整数。在内部,对象存储系统使用此值生成 |
X-Object-Meta-name (可选) |
标头 |
字符串 |
对象元数据,其中 |
If-None-Match (可选) |
标头 |
字符串 |
与 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
X-Symlink-Target (可选) |
标头 |
字符串 |
设置为指定这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。目标对象无需在创建符号链接时存在。您必须对容器和对象的名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。 |
X-Symlink-Target-Account (可选) |
标头 |
字符串 |
设置为指定指向指定值中帐户中对象的跨帐户符号链接。为了使此设置有效,还必须设置 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
ETag |
标头 |
字符串 |
上传对象内容的 MD5 校验和。该值不带引号。如果它是 SLO,则将是分段 etag 的 MD5 校验和。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
Content-Type |
标头 |
字符串 |
如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。 |
last_modified |
body |
字符串 |
上次修改对象的日期和时间。 日期和时间戳格式为 ISO 8601 CCYY-MM-DDThh:mm:ss±hh:mm
例如, 如果包含, |
将对象复制到对象存储中的另一个对象。
您可以将对象复制到具有相同名称的新对象。复制到相同名称是替代使用 POST 向对象添加元数据的方法。使用 POST,您必须指定所有元数据。使用 COPY,您可以向对象添加其他元数据。
使用 COPY,您可以将 X-Fresh-Metadata 头部设置为 true 以复制对象,而不包含任何现有的元数据。
或者,您可以使用带有 X-Copy-From 请求头部的 PUT 来完成与 COPY 对象操作相同的操作。
COPY 操作始终创建一个对象。如果在此操作中使用现有对象,则替换现有对象和元数据,而不是修改对象。因此,此操作返回 Created (201) 响应代码。
通常,如果使用此操作复制清单对象,则新对象是一个普通对象,而不是清单的副本。相反,它是所有分段对象的串联。这意味着您无法复制大于 5 GB 的对象。
要复制清单对象,您需要在 COPY 请求中包含 multipart-manifest=get 查询字符串。新对象包含与原始对象相同的清单。分段对象未被复制。相反,原始清单对象和新清单对象共享相同的一组分段对象。
要复制符号链接,无论是使用 COPY 还是带有 X-Copy-From 请求的 PUT,请包含 symlink=get 查询字符串。新的符号链接将具有与原始符号链接相同的目标。目标对象未被复制。相反,原始符号链接和新的符号链接指向相同的目标对象。
所有元数据在对象复制期间都会保留。如果您在请求复制对象时指定元数据(PUT 或 COPY),则元数据会覆盖目标(新)对象上的任何冲突键。
示例请求和响应
将
goodbye对象从marktwain容器复制到janeausten容器curl -i $publicURL/marktwain/goodbye -X COPY -H "X-Auth-Token: $token" -H "Destination: janeausten/goodbye"
HTTP/1.1 201 Created Content-Length: 0 X-Copied-From-Last-Modified: Thu, 16 Jan 2014 21:19:45 GMT X-Copied-From: marktwain/goodbye Last-Modified: Fri, 17 Jan 2014 18:22:57 GMT Etag: 451e372e48e0f6b1114fa0724aa79fa1 Content-Type: text/html; charset=UTF-8 X-Object-Meta-Movie: AmericanPie X-Trans-Id: txdcb481ad49d24e9a81107-0052d97501 X-Openstack-Request-Id: txdcb481ad49d24e9a81107-0052d97501 Date: Fri, 17 Jan 2014 18:22:57 GMT
或者,您可以使用 PUT 将
goodbye对象从marktwain容器复制到janeausten容器。此请求需要一个Content-Length头部,即使将其设置为零 (0)。curl -i $publicURL/janeausten/goodbye -X PUT -H "X-Auth-Token: $token" -H "X-Copy-From: /marktwain/goodbye" -H "Content-Length: 0"
HTTP/1.1 201 Created Content-Length: 0 X-Copied-From-Last-Modified: Thu, 16 Jan 2014 21:19:45 GMT X-Copied-From: marktwain/goodbye Last-Modified: Fri, 17 Jan 2014 18:22:57 GMT Etag: 451e372e48e0f6b1114fa0724aa79fa1 Content-Type: text/html; charset=UTF-8 X-Object-Meta-Movie: AmericanPie X-Trans-Id: txdcb481ad49d24e9a81107-0052d97501 X-Openstack-Request-Id: txdcb481ad49d24e9a81107-0052d97501 Date: Fri, 17 Jan 2014 18:22:57 GMT
当存在多个副本时,系统会从最新的副本进行复制。也就是说,COPY 操作的行为就像请求中包含 X-Newest 头部一样。
正常响应代码:201
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
multipart-manifest (可选) |
查询 |
字符串 |
如果您包含 |
symlink (可选) |
查询 |
字符串 |
如果您包含 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
目标 |
标头 |
字符串 |
目标对象的容器和对象名称,格式为 |
目标帐户 (可选) |
标头 |
字符串 |
指定复制对象的帐户名称。如果未指定,则对象将复制到拥有该对象的帐户(即路径中的帐户)。 |
Content-Type (可选) |
标头 |
字符串 |
设置对象的 MIME 类型。 |
Content-Encoding (可选) |
标头 |
字符串 |
如果设置,则为 |
Content-Disposition (可选) |
标头 |
字符串 |
如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。 |
X-Object-Meta-name (可选) |
标头 |
字符串 |
对象元数据,其中 |
X-Fresh-Metadata (可选) |
标头 |
布尔值 |
启用创建省略现有用户元数据的对象。如果设置为 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
上传对象内容的 MD5 校验和。该值不带引号。如果它是 SLO,则将是分段 etag 的 MD5 校验和。 |
标头 |
整数 |
对于复制的对象,容器和对象名称的最后修改时间,以UNIX Epoch 时间戳格式表示。例如, |
X-Copied-From (可选) |
标头 |
字符串 |
对于复制的对象,显示复制新对象所使用的容器和对象名称。该值采用 |
X-Copied-From-Account (可选) |
标头 |
字符串 |
对于复制的对象,显示复制新对象所使用的账户。 |
Last-Modified |
标头 |
字符串 |
对象创建或其元数据更改的日期和时间。日期和时间格式如下所示: 时间始终为 UTC。 |
ETag |
标头 |
字符串 |
复制对象内容的 MD5 校验和。该值不带引号。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
Content-Type |
标头 |
字符串 |
如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。 |
从对象存储中永久删除对象。
对象删除会尽快发生。后续的 GET、HEAD、POST 或 DELETE 操作应返回 404 Not Found 错误代码,但由于最终一致性,可能会返回过时数据。
对于静态大对象清单,您可以添加 ?multipart-manifest=delete 查询参数。此操作将删除分段对象,如果所有删除都成功,则删除清单对象。
对符号链接路径发出的 DELETE 请求将删除符号链接,而不是目标对象。
使用 DELETE 操作的替代方法是使用带有 bulk-delete 查询参数的 POST 操作。
示例请求和响应
从
marktwain容器中删除helloworld对象curl -i $publicURL/marktwain/helloworld -X DELETE -H "X-Auth-Token: $token"
HTTP/1.1 204 No Content Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx36c7606fcd1843f59167c-0052d6fdac X-Openstack-Request-Id: tx36c7606fcd1843f59167c-0052d6fdac Date: Wed, 15 Jan 2014 21:29:16 GMT
通常,DELETE 操作不会返回响应体。但是,使用 multipart-manifest=delete 查询参数时,响应体包含清单对象和分段对象的列表以及其 DELETE 操作的状态。
正常响应代码:204
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
multipart-manifest (可选) |
查询 |
字符串 |
如果您包含 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
显示对象元数据。
示例请求和响应
显示对象元数据
curl $publicURL/marktwain/goodbye --head -H "X-Auth-Token: $token"
HTTP/1.1 200 OK Content-Length: 14 Accept-Ranges: bytes Last-Modified: Thu, 16 Jan 2014 21:12:31 GMT Etag: 451e372e48e0f6b1114fa0724aa79fa1 X-Timestamp: 1389906751.73463 X-Object-Meta-Book: GoodbyeColumbus Content-Type: application/octet-stream X-Trans-Id: tx37ea34dcd1ed48ca9bc7d-0052d84b6f X-Openstack-Request-Id: tx37ea34dcd1ed48ca9bc7d-0052d84b6f Date: Thu, 16 Jan 2014 21:13:19 GMT
注意:在上面的示例中使用了
--head选项。如果使用了-i -X HEAD并且Content-Length响应头非零,则 cURL 命令在打印响应头后会停滞,因为它正在等待响应体。但是,对象存储系统不会为 HEAD 操作返回响应体。
如果请求成功,该操作将返回 200 响应代码。
正常响应代码:200
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
temp_url_sig |
查询 |
字符串 |
与临时 URL 一起使用,使用 HMAC-SHA1 加密签名对请求进行签名,该签名定义了允许的 HTTP 方法、过期日期、对象完整路径和临时 URL 的密钥。有关临时 URL 的更多信息,请参阅 临时 URL 中间件。 |
temp_url_expires |
查询 |
整数 |
临时 URL 签名的过期日期和时间,以 UNIX Epoch 时间戳格式 或 ISO 8601 UTC 时间戳 格式表示。例如, |
filename (可选) |
查询 |
字符串 |
覆盖默认文件名。对象存储为基于对象名称的 GET 临时 URL 生成默认文件名。对象存储在 |
multipart-manifest (可选) |
查询 |
字符串 |
如果您包含 |
symlink (可选) |
查询 |
字符串 |
如果您包含 |
X-Newest (可选) |
标头 |
布尔值 |
如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。 |
If-Match (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
If-None-Match (可选) |
标头 |
字符串 |
客户端之前从资源获得的一个或多个实体可以验证这些实体中的任何一个是否当前有效,方法是在 |
If-Modified-Since (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
If-Unmodified-Since (可选) |
标头 |
字符串 |
请参阅 请求意见书:2616。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Length |
标头 |
字符串 |
HEAD 操作不返回内容。 |
X-Object-Meta-name (可选) |
标头 |
字符串 |
对象元数据,其中 |
Content-Disposition (可选) |
标头 |
字符串 |
如果存在,则指定浏览器覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。如果未设置,则此操作不会返回此头部。 |
Content-Encoding (可选) |
标头 |
字符串 |
如果存在,则为 |
X-Delete-At (可选) |
标头 |
整数 |
如果存在,则指定系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如, |
X-Object-Manifest (可选) |
标头 |
字符串 |
如果存在,则这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 |
Last-Modified |
标头 |
字符串 |
对象创建或其元数据更改的日期和时间。日期和时间格式如下所示: 时间始终为 UTC。 |
ETag |
标头 |
字符串 |
对于小于 5 GB 的对象,此值为对象内容的 MD5 校验和。该值不带引号。对于清单对象,此值为清单中每个分段的 ETag 值的串联字符串的 MD5 校验和,而不是下载内容本身的 MD5 校验和。此外,该值用双引号括起来。强烈建议计算接收到的响应体的 MD5 校验和,并将其与 ETag 头部中的值进行比较。如果它们不同,则内容已损坏,因此请重试该操作。 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Static-Large-Object |
标头 |
布尔值 |
如果此对象是静态大对象清单对象,则设置为 |
Content-Type |
标头 |
字符串 |
如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。 |
X-Symlink-Target (可选) |
标头 |
字符串 |
如果存在,则这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。 |
X-Symlink-Target-Account (可选) |
标头 |
字符串 |
如果存在,并且存在 |
响应示例¶
请参阅上面的示例。
创建或更新对象元数据。
要创建或更新自定义元数据,请使用 X-Object-Meta-name 头,其中 name 是元数据项的名称。
注意
元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。
除了自定义元数据之外,还可以更新 Content-Type、Content-Encoding、Content-Disposition 和 X-Delete-At 系统元数据项。但是,您无法更新其他系统元数据,例如 Content-Length 或 Last-Modified。
您可以使用 COPY 作为 POST 操作的替代方法,方法是复制到同一个对象。使用 POST 操作,您必须指定所有元数据项,而使用 COPY 操作,您只需要指定更改或添加的项。所有元数据在对象复制期间都会保留。如果在请求复制对象时指定元数据(无论是 PUT 还是 COPY),则元数据将覆盖目标(新)对象上的任何冲突键。
注意
虽然使用 COPY 代替 POST 允许仅发送元数据的子集,但它会产生读取和重写整个对象内容的成本。
POST 请求将删除您使用以前的 PUT 或 POST 请求添加的任何现有自定义元数据。因此,您必须在请求中指定所有自定义元数据。但是,除非您在请求头中明确提供,否则系统元数据不会被 POST 请求更改。
您还可以设置 X-Delete-At 或 X-Delete-After 头,以定义何时使对象过期。
如本节所述使用时,POST 操作会创建或替换元数据。这种形式的操作没有请求体。POST 操作还有其他用途,如下所示
您还可以使用 form POST 功能 上传对象。
当 POST 操作与
bulk-delete查询参数一起使用时,可以使用单个请求删除多个对象和容器。当 POST 操作与
extract-archive查询参数一起使用时,可以使用它来上传存档(tar 文件)。然后将提取存档以创建对象。
POST 请求不应包含 X-Symlink-Target 头。如果包含,则返回 400 状态代码,并且不会修改对象元数据。
当将 POST 请求发送到符号链接时,元数据将应用于符号链接,但请求将导致 307 Temporary Redirect 响应发送到客户端。POST 不会重定向到目标对象,因此对没有 symlink=get 的符号链接的 GET/HEAD 请求将不会返回作为 POST 请求的一部分发送的元数据。
示例请求和响应
创建对象元数据
curl -i $publicURL/marktwain/goodbye -X POST -H "X-Auth-Token: $token" -H "X-Object-Meta-Book: GoodbyeColumbus"
HTTP/1.1 202 Accepted Content-Length: 76 Content-Type: text/html; charset=UTF-8 X-Trans-Id: txb5fb5c91ba1f4f37bb648-0052d84b3f X-Openstack-Request-Id: txb5fb5c91ba1f4f37bb648-0052d84b3f Date: Thu, 16 Jan 2014 21:12:31 GMT <html> <h1>Accepted </h1> <p>The request is accepted for processing. </p> </html>
更新对象元数据
curl -i $publicURL/marktwain/goodbye -X POST -H "X-Auth-Token: $token" -H "X-Object-Meta-Book: GoodbyeOldFriend"
HTTP/1.1 202 Accepted Content-Length: 76 Content-Type: text/html; charset=UTF-8 X-Trans-Id: tx5ec7ab81cdb34ced887c8-0052d84ca4 X-Openstack-Request-Id: tx5ec7ab81cdb34ced887c8-0052d84ca4 Date: Thu, 16 Jan 2014 21:18:28 GMT <html> <h1>Accepted </h1> <p>The request is accepted for processing. </p> </html>
正常响应代码:202
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
account (可选) |
路径 |
字符串 |
帐户的唯一名称。帐户也称为项目或租户。 |
container (可选) |
路径 |
字符串 |
容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 ( |
object (可选) |
路径 |
字符串 |
对象的唯一名称。 |
bulk-delete (可选) |
查询 |
字符串 |
当 POST 请求中存在 |
extract-archive (可选) |
查询 |
字符串 |
当 POST 请求中存在 |
X-Auth-Token (可选) |
标头 |
字符串 |
身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。 |
X-Service-Token (可选) |
标头 |
字符串 |
服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌。 |
X-Object-Meta-name (可选) |
标头 |
字符串 |
对象元数据,其中 |
X-Delete-At (可选) |
标头 |
整数 |
系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如, |
X-Delete-After (可选) |
标头 |
整数 |
系统移除对象后的秒数。该值应为正整数。在内部,对象存储系统使用此值生成 |
Content-Disposition (可选) |
标头 |
字符串 |
如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。 |
Content-Encoding (可选) |
标头 |
字符串 |
如果设置,则为 |
Content-Type (可选) |
标头 |
字符串 |
设置对象的 MIME 类型。 |
X-Trans-Id-Extra (可选) |
标头 |
字符串 |
额外的事务信息。使用 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Date |
标头 |
字符串 |
系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 |
X-Timestamp |
标头 |
整数 |
帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如, |
Content-Length |
标头 |
字符串 |
如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。 |
Content-Type (可选) |
标头 |
字符串 |
如果存在,此值是响应体中信息或错误文本的 MIME 类型。 |
X-Trans-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。 |
X-Openstack-Request-Id |
标头 |
字符串 |
此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 |
端点¶
如果已配置,则列出帐户的端点。
列出对象、帐户或容器的端点。
当云提供商启用列出 /endpoints/ 路径的中间件时,需要数据位置信息的软件可以使用此调用来避免网络开销。云提供商可以将 /endpoints/ 路径映射到另一个资源,因此此确切资源可能因提供商而异。因为它直接连接到中间件,所以该调用未经过身份验证,因此请确保在环境和网络安全时使用此调用。
错误响应代码:201,
请求¶
此操作不接受请求体。