对象存储 API

可发现性

如果已配置,则列出此版本的 OpenStack 对象存储 API 的激活功能。

GET
/info

列出激活的功能

列出此版本的 OpenStack 对象存储 API 的激活功能。

大部分信息是“公开的”,即对所有调用者可见。但是,某些配置和功能项仅供系统管理员保留。要访问此数据,必须将 swiftinfo_sigswiftinfo_expires 查询参数添加到请求中。

正常响应代码:200 错误响应代码

请求

名称

入参

类型

描述

swiftinfo_sig (可选)

查询

字符串

一个基于哈希的消息认证码 (HMAC),用于启用对仅管理员信息的访问。要使用此参数,还需要 swiftinfo_expires 参数。

swiftinfo_expires (可选)

查询

整数

swiftinfo_sig 过期的时间。时间以 UNIX Epoch 时间戳格式 表示。

响应示例

{
    "swift": {
        "version": "1.11.0"
    },
    "slo": {
        "max_manifest_segments": 1000,
        "max_manifest_size": 2097152,
        "min_segment_size": 1
    },
    "staticweb": {},
    "tempurl": {}
}

帐户

列出帐户的容器。创建、更新、显示和删除帐户元数据。有关帐户的更多信息和概念,请参阅 对象存储 API 概述

GET
/v1/{account}

显示帐户详细信息并列出容器

显示帐户的详细信息并列出容器,按名称排序。

名称的排序顺序基于二进制比较,单个内置的排序序列通过使用 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)。成功。响应主体显示没有容器。帐户没有容器,或者您正在使用 markerlimitend_marker 查询参数分页浏览一个长名称列表,并且您已到达列表的末尾。

正常响应代码:200 错误响应代码:204,

请求

名称

入参

类型

描述

account (可选)

路径

字符串

帐户的唯一名称。帐户也称为项目或租户。

limit (可选)

查询

整数

对于整数值 n,将结果数量限制为 n。

marker (可选)

查询

字符串

对于字符串值 x,将列表限制为名称大于 x 的项目。

end_marker (可选)

查询

字符串

对于字符串值 x,将列表限制为名称小于 x 的项目。

format (可选)

查询

字符串

响应格式。有效值是 jsonxmlplain。默认值为 plain。如果您将 format=xmlformat=json 查询参数附加到存储帐户 URL,则响应将以该格式序列化的扩展容器信息显示。如果您附加 format=plain 查询参数,则响应将列出以换行符分隔的容器名称。

prefix (可选)

查询

字符串

仅返回具有此前缀的对象。与 delimiter 查询结合使用时,这使 API 用户能够模拟和遍历容器中的对象,就像它们位于目录树中一样。

delimiter (可选)

查询

字符串

分隔符是一个用于拆分对象名称以呈现对象伪目录层次结构的单个字符。与 prefix 查询结合使用时,这使 API 用户能够模拟和遍历容器中的对象,就像它们位于目录树中一样。

reverse (可选)

查询

布尔值

默认情况下,列表按名称升序排序。如果您包含 reverse=true 查询参数,则列表将按名称降序排序。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Newest (可选)

标头

布尔值

如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。

Accept (可选)

标头

字符串

与其使用 format 查询参数,不如将此标头设置为 application/jsonapplication/xmltext/xml

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

如果操作成功,响应主体的大小(以字节为单位)。发生错误时,此值为错误文本的长度。

X-Account-Meta-name (可选)

标头

字符串

自定义帐户元数据项,其中 name 是元数据项的名称。每个元数据项(每个 name)出现一个 X-Account-Meta-name 响应标头。

X-Account-Meta-Temp-URL-Key (可选)

标头

字符串

临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。

X-Account-Meta-Temp-URL-Key-2 (可选)

标头

字符串

临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Account-Bytes-Used

标头

整数

存储在对象存储中的帐户的总字节数。

X-Account-Container-Count

标头

整数

容器的数量。

X-Account-Object-Count

标头

整数

帐户中的对象数量。

X-Account-Storage-Policy-name-Bytes-Used

标头

整数

存储在给定存储策略中的总字节数,其中 name 是存储策略的名称。

X-Account-Storage-Policy-name-Container-Count

标头

整数

使用给定存储策略的帐户中的容器数量,其中 name 是存储策略的名称。

X-Account-Storage-Policy-name-Object-Count

标头

整数

给定存储策略中的对象数量,其中 name 是存储策略的名称。

X-Account-Meta-Quota-Bytes (可选)

标头

字符串

如果存在,这是存储在帐户中的对象的总大小限制(以字节为单位)。此值通常由管理员设置。

X-Account-Access-Control (可选)

标头

字符串

注意X-Account-Access-Control 不受 Keystone 身份验证的支持。

帐户访问控制列表 (ACL),授予对帐户中的容器和对象的访问权限。如果没有 ACL,此操作不会返回此标头。有关更多信息,请参阅 帐户 ACL

Content-Type

标头

字符串

如果操作成功,此值为列表响应的 MIME 类型。MIME 类型由请求指定的列表格式确定,将是 text/plainapplication/jsonapplication/xmltext/xml。如果操作失败,此值为响应主体中错误文本的 MIME 类型。

count

body

整数

容器中的对象数量。

bytes

body

整数

存储在对象存储中的帐户的总字节数。

name

body

字符串

容器的名称。

POST
/v1/{account}

创建、更新或删除帐户元数据

创建、更新或删除帐户元数据。

要创建、更新或删除自定义元数据,请使用 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 (可选)

标头

字符串

账户元数据。 name 是您想要添加、更新或删除的元数据项的名称。要删除此项,请在此头文件中发送一个空值。您必须为每个元数据项(每个 name)指定一个 X-Account-Meta-name 头,以便添加、更新或删除。

X-Remove-Account-name (可选)

标头

字符串

删除名为 name 的元数据项。例如,X-Remove-Account-Meta-Blue 删除自定义元数据。

X-Account-Access-Control (可选)

标头

字符串

注意X-Account-Access-Control 不受 Keystone 身份验证的支持。

设置授予账户中容器和对象访问权限的账户访问控制列表 (ACL)。有关更多信息,请参阅 账户 ACL

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

HEAD
/v1/{account}

显示账户元数据

显示账户的元数据。

账户的元数据包括

  • 容器数量

  • 对象数量

  • 存储在对象存储中用于该账户的总字节数

由于存储系统可以存储大量数据,因此在将总字节数响应表示为整数时要小心。如果您的平台支持该基本类型,请尽可能将其转换为 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 (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

X-Account-Meta-name (可选)

标头

字符串

自定义帐户元数据项,其中 name 是元数据项的名称。每个元数据项(每个 name)出现一个 X-Account-Meta-name 响应标头。

X-Account-Meta-Temp-URL-Key (可选)

标头

字符串

临时 URL 的密钥值。如果未设置,则响应中不会返回此标头。

X-Account-Meta-Temp-URL-Key-2 (可选)

标头

字符串

临时 URL 的第二个密钥值。如果未设置,则响应中不会返回此标头。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Account-Bytes-Used

标头

整数

存储在对象存储中的帐户的总字节数。

X-Account-Object-Count

标头

整数

帐户中的对象数量。

X-Account-Container-Count

标头

整数

容器的数量。

X-Account-Storage-Policy-name-Bytes-Used

标头

整数

存储在给定存储策略中的总字节数,其中 name 是存储策略的名称。

X-Account-Storage-Policy-name-Container-Count

标头

整数

使用给定存储策略的帐户中的容器数量,其中 name 是存储策略的名称。

X-Account-Storage-Policy-name-Object-Count

标头

整数

给定存储策略中的对象数量,其中 name 是存储策略的名称。

X-Account-Meta-Quota-Bytes (可选)

标头

字符串

如果存在,这是存储在帐户中的对象的总大小限制(以字节为单位)。此值通常由管理员设置。

X-Account-Access-Control (可选)

标头

字符串

注意X-Account-Access-Control 不受 Keystone 身份验证的支持。

帐户访问控制列表 (ACL),授予对帐户中的容器和对象的访问权限。如果没有 ACL,此操作不会返回此标头。有关更多信息,请参阅 帐户 ACL

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

DELETE
/v1/{account}

删除指定的账户

当经销商管理员发出此请求时,会删除指定的账户。账户仅由 (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 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

容器

列出容器中的对象。创建、显示容器的详细信息以及删除容器。创建、更新、显示和删除容器元数据。有关容器的更多信息和概念,请参阅 对象存储 API 概述

GET
/v1/{account}/{container}

显示容器详细信息和列出对象

显示容器的详细信息并按名称列出容器中的对象。

在请求中指定查询参数以过滤列表并返回对象的子集。省略查询参数以返回存储在容器中的对象列表,最多 10,000 个名称。最大值 10,000 是可配置的。要查看集群的值,请发出 GET /info 请求。

示例请求和响应

  • OK (200)。成功。响应体列出了对象。

  • No Content (204)。成功。响应体未显示任何对象。容器中没有对象,或者您正在使用 markerlimitend_marker 查询参数分页浏览一个很长的对象列表,并且您已到达列表的末尾。

如果容器不存在,则该调用将返回 Not Found (404) 响应代码。

正常响应代码:200, 204

错误响应代码:404

请求

名称

入参

类型

描述

account (可选)

路径

字符串

帐户的唯一名称。帐户也称为项目或租户。

container (可选)

路径

字符串

容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

limit (可选)

查询

整数

对于整数值 n,将结果数量限制为 n。

marker (可选)

查询

字符串

对于字符串值 x,将列表限制为名称大于 x 的项目。

end_marker (可选)

查询

字符串

对于字符串值 x,将列表限制为名称小于 x 的项目。

prefix (可选)

查询

字符串

仅返回具有此前缀的对象。与 delimiter 查询结合使用时,这使 API 用户能够模拟和遍历容器中的对象,就像它们位于目录树中一样。

format (可选)

查询

字符串

响应格式。有效值是 jsonxmlplain。默认值为 plain。如果您将 format=xmlformat=json 查询参数附加到存储帐户 URL,则响应将以该格式序列化的扩展容器信息显示。如果您附加 format=plain 查询参数,则响应将列出以换行符分隔的容器名称。

delimiter (可选)

查询

字符串

分隔符是一个用于拆分对象名称以呈现对象伪目录层次结构的单个字符。与 prefix 查询结合使用时,这使 API 用户能够模拟和遍历容器中的对象,就像它们位于目录树中一样。

path (可选)

查询

字符串

对于字符串值,返回嵌套在伪路径中的对象名称。请使用 prefix/delimiter 查询而不是使用此 path 查询。

reverse (可选)

查询

布尔值

默认情况下,列表按名称升序排序。如果您包含 reverse=true 查询参数,则列表将按名称降序排序。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Newest (可选)

标头

布尔值

如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。

Accept (可选)

标头

字符串

与其使用 format 查询参数,不如将此标头设置为 application/jsonapplication/xmltext/xml

X-Container-Meta-Temp-URL-Key (可选)

标头

字符串

临时 URL 的密钥值。

X-Container-Meta-Temp-URL-Key-2 (可选)

标头

字符串

临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

X-Storage-Policy (可选)

标头

字符串

在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。

响应参数

名称

入参

类型

描述

X-Container-Meta-name

标头

字符串

自定义容器元数据项,其中 name 是元数据项的名称。每个元数据项(每个 name)都会出现一个 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 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Content-Type

标头

字符串

如果操作成功,此值为列表响应的 MIME 类型。MIME 类型由请求指定的列表格式确定,将是 text/plainapplication/jsonapplication/xmltext/xml。如果操作失败,此值为响应主体中错误文本的 MIME 类型。

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

hash

body

字符串

对象的内容的 MD5 校验和值。

last_modified

body

字符串

上次修改对象的日期和时间。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

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
/v1/{account}/{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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

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-Container-Sync-Key 头部发送一个空值。

X-Container-Sync-Key (可选)

标头

字符串

设置容器同步的密钥。如果您删除密钥,同步将停止。有关更多信息,请参阅 容器到容器同步

X-Versions-Location (可选)

标头

字符串

URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 X-History-Location,则将禁用此容器的版本控制。 X-Versions-LocationX-History-Location 不能同时设置。有关对象版本控制的更多信息,请参阅 对象版本控制

X-History-Location (可选)

标头

字符串

URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 X-Versions-Location,则将禁用此容器的版本控制。 X-History-LocationX-Versions-Location 不能同时设置。有关对象版本控制的更多信息,请参阅 对象版本控制

X-Container-Meta-name (可选)

标头

字符串

容器元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据项(每个 name)指定一个 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 (可选)

标头

字符串

对象存储服务暴露给浏览器的头部(技术上,通过 user-agent 设置),在请求响应中,用空格分隔。默认情况下,对象存储服务返回以下头部

  • 所有“简单响应头部”,如 http://www.w3.org/TR/cors/#simple-response-header 上所述。

  • 头部 etagx-timestampx-trans-idx-openstack-request-id

  • 所有元数据头部(容器的 X-Container-Meta-* 和对象的 X-Object-Meta-*)。

  • 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-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

X-Storage-Policy (可选)

标头

字符串

在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

POST
/v1/{account}/{container}

创建、更新或删除容器元数据

创建、更新或删除容器的自定义元数据。

要创建、更新或删除自定义元数据项,请使用 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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Container-Read (可选)

标头

字符串

设置授予容器读取访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 GET 或 HEAD 操作对象在容器中或对容器本身执行 GET 或 HEAD 操作的能力。

ACL 的格式和范围取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL

X-Remove-Container-name (可选)

标头

字符串

删除名为 name 的元数据项。例如,X-Remove-Container-Read 删除 X-Container-Read 元数据项,X-Remove-Container-Meta-Blue 删除自定义元数据。

X-Container-Write (可选)

标头

字符串

设置授予容器写入访问权限的容器访问控制列表 (ACL)。访问范围特定于容器。ACL 授予执行 PUT、POST 和 DELETE 操作对象在容器中的能力。它不授予对容器元数据的写入访问权限。

ACL 的格式取决于对象存储服务使用的授权系统。有关更多信息,请参阅 容器 ACL

X-Container-Sync-To (可选)

标头

字符串

设置容器同步的目标地址。与 X -Container-Sync-Key 头部中指示的密钥一起使用。如果您想停止容器同步,请为 X-Container-Sync-Key 头部发送一个空值。

X-Container-Sync-Key (可选)

标头

字符串

设置容器同步的密钥。如果您删除密钥,同步将停止。有关更多信息,请参阅 容器到容器同步

X-Versions-Location (可选)

标头

字符串

URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 X-History-Location,则将禁用此容器的版本控制。 X-Versions-LocationX-History-Location 不能同时设置。有关对象版本控制的更多信息,请参阅 对象版本控制

X-History-Location (可选)

标头

字符串

URL 编码的 UTF-8 格式的容器,用于存储对象的先前版本。如果既未设置此头部,也未设置 X-Versions-Location,则将禁用此容器的版本控制。 X-History-LocationX-Versions-Location 不能同时设置。有关对象版本控制的更多信息,请参阅 对象版本控制

X-Remove-Versions-Location (可选)

标头

字符串

设置为任意值以禁用版本控制。请注意,这将禁用通过 X-History-Location 设置的版本控制。

X-Remove-History-Location (可选)

标头

字符串

设置为任意值以禁用版本控制。请注意,这将禁用通过 X-Versions-Location 设置的版本控制。

X-Container-Meta-name (可选)

标头

字符串

容器元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据项(每个 name)指定一个 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 (可选)

标头

字符串

对象存储服务暴露给浏览器的头部(技术上,通过 user-agent 设置),在请求响应中,用空格分隔。默认情况下,对象存储服务返回以下头部

  • 所有“简单响应头部”,如 http://www.w3.org/TR/cors/#simple-response-header 上所述。

  • 头部 etagx-timestampx-trans-idx-openstack-request-id

  • 所有元数据头部(容器的 X-Container-Meta-* 和对象的 X-Object-Meta-*)。

  • 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。如果未设置此头部,则默认值为 application/directory。目录标记对象是 0 字节的对象,用于创建一个模拟的层次结构。例如,如果您设置 "X-Container- Meta-Web-Directory-Type: text/directory",对象存储会将 content-type 为 text/directory 的 0 字节对象视为目录,而不是对象。

X-Container-Meta-Temp-URL-Key (可选)

标头

字符串

临时 URL 的密钥值。

X-Container-Meta-Temp-URL-Key-2 (可选)

标头

字符串

临时 URL 的第二个密钥值。第二个密钥使您能够通过同时拥有两个活动密钥来轮换密钥。

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

HEAD
/v1/{account}/{container}

显示容器元数据

显示容器元数据,包括存储在容器中的对象数量和所有对象的总字节数。

显示容器元数据请求

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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Newest (可选)

标头

布尔值

如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

X-Container-Meta-name

标头

字符串

自定义容器元数据项,其中 name 是元数据项的名称。每个元数据项(每个 name)都会出现一个 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 (可选)

标头

字符串

对象存储服务暴露给浏览器的头部(技术上,通过 user-agent 设置),在请求响应中,用空格分隔。默认情况下,对象存储服务返回以下头部

  • 所有“简单响应头部”,如 http://www.w3.org/TR/cors/#simple-response-header 上所述。

  • 头部 etagx-timestampx-trans-idx-openstack-request-id

  • 所有元数据头部(容器的 X-Container-Meta-* 和对象的 X-Object-Meta-*)。

  • 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 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

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 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Versions-Location (可选)

标头

字符串

如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制

X-History-Location (可选)

标头

字符串

如果存在,则此容器已启用版本控制,并且该值为 UTF-8 编码的另一个容器的名称。有关对象版本控制的更多信息,请参阅 对象版本控制

X-Storage-Policy (可选)

标头

字符串

在请求中,指定要用于容器的存储策略的名称。在响应中,是存储策略名称。容器的存储策略无法更改。

DELETE
/v1/{account}/{container}

删除容器

删除空容器。

除非容器为空,否则此操作将失败。空容器没有对象。

删除 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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

对象

创建、替换、显示对象详细信息和删除对象。使用新的或不同的名称从另一个对象复制对象。更新对象元数据。有关更多信息和关于对象的基本概念,请参阅 对象存储 API 概述大对象

GET
/v1/{account}/{container}/{object}

获取对象内容和元数据

下载对象内容并获取对象元数据。

此操作在响应头部中返回对象元数据,并在响应主体中返回对象内容。

如果这是一个大对象,则响应主体包含分段对象的连接内容。要获取静态大对象的清单而不是连接的分段对象,请使用 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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

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 时间戳 格式表示。例如,14406190482015-08-26T19:57:28Z 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT。有关临时 URL 的更多信息,请参阅 临时 URL 中间件

filename (可选)

查询

字符串

覆盖默认文件名。对象存储为基于对象名称的 GET 临时 URL 生成默认文件名。对象存储在 Content-Disposition 响应头部中返回此值。浏览器可以将此文件名值解释为保存文件的下载程序。

multipart-manifest (可选)

查询

字符串

如果您包含 multipart-manifest=get 查询参数并且该对象是一个大对象,则不会返回对象内容。相反,清单将以动态大对象的 X-Object-Manifest 响应头部或静态大对象的响应主体中的形式返回。

symlink (可选)

查询

字符串

如果您包含 symlink=get 查询参数并且该对象是一个符号链接,则响应将包含来自符号链接本身的数据和元数据,而不是来自目标对象。

Range (可选)

标头

字符串

要获取的内容范围。您可以使用 Range 头部通过使用一个或多个范围规范来获取数据的部分内容。要指定多个范围,请用逗号分隔范围规范。范围规范的类型是:- 字节范围规范。使用 FIRST_BYTE_OFFSET 指定数据范围的开始位置,并使用 LAST_BYTE_OFFSET 指定结束位置。您可以省略 LAST_BYTE_OFFSET,如果省略,则该值默认为数据的最后一个字节的偏移量。- 后缀字节范围规范。使用 LENGTH 字节指定数据范围的长度。以下形式的头部指定以下范围的数据

  • Range: bytes=-5。最后五个字节。

  • Range: bytes=10-15。10 字节偏移量后的六个字节的数据。

  • Range: bytes=10-15,-5。一个多部分响应,包含最后五个字节和 10 字节偏移量后的六个字节的数据。 Content-Type 响应头部包含 multipart/byteranges

  • Range: bytes=4-6。字节 4 到 6(包括)。

  • Range: bytes=2-2。字节 2,数据的第三个字节。

  • Range: bytes=6-。字节 6 及之后。

  • Range: bytes=1-3,2-5。一个多部分响应,包含字节 1 到 3(包括)和字节 2 到 5(包括)。 Content-Type 响应头部包含 multipart/byteranges

If-Match (可选)

标头

字符串

请参阅 请求意见书:2616

If-None-Match (可选)

标头

字符串

客户端之前从资源获得的一个或多个实体可以验证这些实体中的任何一个是否当前有效,方法是在 If-None-Match header 字段中包含与其关联的实体标签列表。有关详细信息,请参阅 请求意见书:2616

If-Modified-Since (可选)

标头

字符串

请参阅 请求意见书:2616

If-Unmodified-Since (可选)

标头

字符串

请参阅 请求意见书:2616

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

响应主体中对象内容的长度,以字节为单位。

Content-Type

标头

字符串

如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。

X-Object-Meta-name (可选)

标头

字符串

如果存在,则为自定义对象元数据项,其中 name 是元数据项的名称。每个元数据 name 项都出现一个``X-Object-Meta-name`` 响应头部。

Content-Disposition (可选)

标头

字符串

如果存在,则指定浏览器覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。如果未设置,则此操作不会返回此头部。

Content-Encoding (可选)

标头

字符串

如果存在,则为 Content-Encoding 元数据的取值。如果未设置,则操作不会返回此头部。

X-Delete-At (可选)

标头

整数

如果存在,则指定系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如,1440619048 等同于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Accept-Ranges

标头

字符串

对象接受的范围类型。

X-Object-Manifest (可选)

标头

字符串

如果存在,则这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 container/prefix

Last-Modified

标头

字符串

对象创建或其元数据更改的日期和时间。日期和时间格式如下所示:Fri, 12 Aug 2016 14:24:16 GMT

时间始终为 UTC。

ETag

标头

字符串

对于小于 5 GB 的对象,此值为对象内容的 MD5 校验和。该值不带引号。对于清单对象,此值为清单中每个分段的 ETag 值的串联字符串的 MD5 校验和,而不是下载内容本身的 MD5 校验和。此外,该值用双引号括起来。强烈建议计算接收到的响应体的 MD5 校验和,并将其与 ETag 头部中的值进行比较。如果它们不同,则内容已损坏,因此请重试该操作。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Static-Large-Object

标头

布尔值

如果此对象是静态大对象清单对象,则设置为 true

X-Symlink-Target (可选)

标头

字符串

如果存在,则这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。

X-Symlink-Target-Account (可选)

标头

字符串

如果存在,并且存在 X-Symlink-Target,则这是指向指定值中帐户中对象的跨帐户符号链接。

响应示例

请参阅上面的示例。

PUT
/v1/{account}/{container}/{object}

创建或替换对象

创建带有数据内容和元数据的对象,或替换现有对象及其数据内容和元数据。

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-EncodingContent-Length 请求头部。

如果写入到对象存储的数据的 MD5 校验和与可选的 ETag 值不匹配,则操作返回 Unprocessable Entity (422) 响应代码。

正常响应代码:201

错误响应代码:404、408、411、422

请求

名称

入参

类型

描述

account (可选)

路径

字符串

帐户的唯一名称。帐户也称为项目或租户。

container (可选)

路径

字符串

容器的唯一名称(在账户内)。容器名称的长度必须在 1 到 256 个字符之间,并且可以以任何字符开头,并包含任何模式。字符集必须为 UTF-8。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

object (可选)

路径

字符串

对象的唯一名称。

multipart-manifest (可选)

查询

字符串

如果您包含 multipart-manifest=put 查询参数,则该对象是一个静态大对象清单,并且主体包含该清单。有关更多信息,请参阅 静态大对象

temp_url_sig

查询

字符串

与临时 URL 一起使用,使用 HMAC-SHA1 加密签名对请求进行签名,该签名定义了允许的 HTTP 方法、过期日期、对象完整路径和临时 URL 的密钥。有关临时 URL 的更多信息,请参阅 临时 URL 中间件

temp_url_expires

查询

整数

临时 URL 签名的过期日期和时间,以 UNIX Epoch 时间戳格式ISO 8601 UTC 时间戳 格式表示。例如,14406190482015-08-26T19:57:28Z 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT。有关临时 URL 的更多信息,请参阅 临时 URL 中间件

X-Object-Manifest (可选)

标头

字符串

设置为指定这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 container/prefix。您必须对容器和前缀的名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

Content-Length (可选)

标头

整数

设置为对象内容的长度(即请求体的字节长度)。如果使用分块传输编码,则不要设置。

Transfer-Encoding (可选)

标头

字符串

设置为 chunked 以启用分块传输编码。如果使用,则不要将 Content-Length 头部设置为非零值。

Content-Type (可选)

标头

字符串

设置对象的 MIME 类型。

X-Detect-Content-Type (可选)

标头

布尔值

如果设置为 true,则对象存储会根据文件扩展名猜测内容类型,并忽略 Content-Type 头部中发送的值(如果存在)。

X-Copy-From (可选)

标头

字符串

如果设置,则这是用于通过复制 X-Copy-From 对象来创建新对象的对象的名称。该值格式为 {container}/{object}。您必须对容器和对象的名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。使用带有 X-Copy-From 的 PUT 具有与使用 COPY 操作复制对象相同的效果。使用带有 X-Copy-FromRange 头部将创建一个新的部分复制对象,其字节由 Range 设置。

X-Copy-From-Account (可选)

标头

字符串

指定复制对象的帐户名称。如果未指定,则对象将复制到拥有新对象的帐户(即路径中的帐户)。

ETag (可选)

标头

字符串

请求体的 MD5 校验和值。例如,对象内容的 MD5 校验和值。对于清单对象,此值是清单中每个分段的 ETag 值的串联字符串的 MD5 校验和。强烈建议计算 MD5 校验和值并将其包含在请求中。这使对象存储 API 能够检查上传的完整性。该值不带引号。

Content-Disposition (可选)

标头

字符串

如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。

Content-Encoding (可选)

标头

字符串

如果设置,则为 Content-Encoding 元数据的取值。

X-Delete-At (可选)

标头

整数

系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如,1440619048 等同于 Mon, Wed, 26 Aug 2015 19:57:28 GMT。该值应为对应于未来时间的正整数。如果同时设置了 X-Delete-AfterX-Delete-At,则 X-Delete-After 优先。

X-Delete-After (可选)

标头

整数

系统移除对象后的秒数。该值应为正整数。在内部,对象存储系统使用此值生成 X-Delete-At 元数据项。如果同时设置了 X-Delete-AfterX-Delete-At,则 X-Delete-After 优先。

X-Object-Meta-name (可选)

标头

字符串

对象元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据 name 项指定一个 X-Object-Meta-name 头部。

If-None-Match (可选)

标头

字符串

Expect: 100-Continue 结合使用,指定一个 "If-None-Match: *" 头部,以查询服务器是否在发送任何数据之前已经拥有该对象的副本。

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

X-Symlink-Target (可选)

标头

字符串

设置为指定这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。目标对象无需在创建符号链接时存在。您必须对容器和对象的名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。

X-Symlink-Target-Account (可选)

标头

字符串

设置为指定指向指定值中帐户中对象的跨帐户符号链接。为了使此设置有效,还必须设置 X-Symlink-Target。您必须对帐户名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

ETag

标头

字符串

上传对象内容的 MD5 校验和。该值不带引号。如果它是 SLO,则将是分段 etag 的 MD5 校验和。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

Content-Type

标头

字符串

如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。

last_modified

body

字符串

上次修改对象的日期和时间。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

COPY
/v1/{account}/{container}/{object}

复制对象

将对象复制到对象存储中的另一个对象。

您可以将对象复制到具有相同名称的新对象。复制到相同名称是替代使用 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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

object (可选)

路径

字符串

对象的唯一名称。

multipart-manifest (可选)

查询

字符串

如果您包含 multipart-manifest=get 查询参数并且该对象是一个大对象,则不会复制对象内容。相反,清单将被复制到新对象。

symlink (可选)

查询

字符串

如果您包含 symlink=get 查询参数并且该对象是一个符号链接,则不会复制目标对象内容。相反,符号链接将被复制以创建指向相同目标的新的符号链接。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

目标

标头

字符串

目标对象的容器和对象名称,格式为 /container/object。您必须对目标容器和对象的名称进行 UTF-8 编码,然后 URL 编码,然后将其包含在头部中。

目标帐户 (可选)

标头

字符串

指定复制对象的帐户名称。如果未指定,则对象将复制到拥有该对象的帐户(即路径中的帐户)。

Content-Type (可选)

标头

字符串

设置对象的 MIME 类型。

Content-Encoding (可选)

标头

字符串

如果设置,则为 Content-Encoding 元数据的取值。

Content-Disposition (可选)

标头

字符串

如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。

X-Object-Meta-name (可选)

标头

字符串

对象元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据 name 项指定一个 X-Object-Meta-name 头部。

X-Fresh-Metadata (可选)

标头

布尔值

启用创建省略现有用户元数据的对象。如果设置为 true,则 COPY 请求将创建一个没有现有用户元数据的对象。默认值为 false

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

上传对象内容的 MD5 校验和。该值不带引号。如果它是 SLO,则将是分段 etag 的 MD5 校验和。

标头

整数

对于复制的对象,容器和对象名称的最后修改时间,以UNIX Epoch 时间戳格式表示。例如,1440619048 等同于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Copied-From (可选)

标头

字符串

对于复制的对象,显示复制新对象所使用的容器和对象名称。该值采用 {container}/{object} 格式。

X-Copied-From-Account (可选)

标头

字符串

对于复制的对象,显示复制新对象所使用的账户。

Last-Modified

标头

字符串

对象创建或其元数据更改的日期和时间。日期和时间格式如下所示:Fri, 12 Aug 2016 14:24:16 GMT

时间始终为 UTC。

ETag

标头

字符串

复制对象内容的 MD5 校验和。该值不带引号。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

Content-Type

标头

字符串

如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。

DELETE
/v1/{account}/{container}/{object}

删除对象

从对象存储中永久删除对象。

对象删除会尽快发生。后续的 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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

object (可选)

路径

字符串

对象的唯一名称。

multipart-manifest (可选)

查询

字符串

如果您包含 multipart-manifest=delete 查询参数并且该对象是静态大对象,则将删除分段对象和清单对象。如果您省略 multipart-manifest=delete 查询参数并且该对象是静态大对象,则将删除清单对象,但不会删除分段对象。响应体将包含每个已处理分段对象的删除状态。

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

HEAD
/v1/{account}/{container}/{object}

显示对象元数据

显示对象元数据。

示例请求和响应

  • 显示对象元数据

    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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

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 时间戳 格式表示。例如,14406190482015-08-26T19:57:28Z 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT。有关临时 URL 的更多信息,请参阅 临时 URL 中间件

filename (可选)

查询

字符串

覆盖默认文件名。对象存储为基于对象名称的 GET 临时 URL 生成默认文件名。对象存储在 Content-Disposition 响应头部中返回此值。浏览器可以将此文件名值解释为保存文件的下载程序。

multipart-manifest (可选)

查询

字符串

如果您包含 multipart-manifest=get 查询参数并且该对象是大型对象,则不会返回对象元数据。相反,响应头将包含清单元数据,对于动态大型对象,将包含 X-Object-Manifest 响应头。

symlink (可选)

查询

字符串

如果您包含 symlink=get 查询参数并且该对象是一个符号链接,则响应将包含来自符号链接本身的数据和元数据,而不是来自目标对象。

X-Newest (可选)

标头

布尔值

如果设置为 true,对象存储将查询所有副本以返回最新的副本。如果您省略此标头,对象存储在找到一个有效副本后会更快地响应。由于将此标头设置为 true 对后端来说更昂贵,因此只有在绝对需要时才使用它。

If-Match (可选)

标头

字符串

请参阅 请求意见书:2616

If-None-Match (可选)

标头

字符串

客户端之前从资源获得的一个或多个实体可以验证这些实体中的任何一个是否当前有效,方法是在 If-None-Match header 字段中包含与其关联的实体标签列表。有关详细信息,请参阅 请求意见书:2616

If-Modified-Since (可选)

标头

字符串

请参阅 请求意见书:2616

If-Unmodified-Since (可选)

标头

字符串

请参阅 请求意见书:2616

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Content-Length

标头

字符串

HEAD 操作不返回内容。 Content-Length 头值不是响应体的大小,而是对象的大小(以字节为单位)。

X-Object-Meta-name (可选)

标头

字符串

对象元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据 name 项指定一个 X-Object-Meta-name 头部。

Content-Disposition (可选)

标头

字符串

如果存在,则指定浏览器覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。如果未设置,则此操作不会返回此头部。

Content-Encoding (可选)

标头

字符串

如果存在,则为 Content-Encoding 元数据的取值。如果未设置,则操作不会返回此头部。

X-Delete-At (可选)

标头

整数

如果存在,则指定系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如,1440619048 等同于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Object-Manifest (可选)

标头

字符串

如果存在,则这是一个动态大对象清单对象。其值为分段对象的容器和对象名称前缀,格式为 container/prefix

Last-Modified

标头

字符串

对象创建或其元数据更改的日期和时间。日期和时间格式如下所示:Fri, 12 Aug 2016 14:24:16 GMT

时间始终为 UTC。

ETag

标头

字符串

对于小于 5 GB 的对象,此值为对象内容的 MD5 校验和。该值不带引号。对于清单对象,此值为清单中每个分段的 ETag 值的串联字符串的 MD5 校验和,而不是下载内容本身的 MD5 校验和。此外,该值用双引号括起来。强烈建议计算接收到的响应体的 MD5 校验和,并将其与 ETag 头部中的值进行比较。如果它们不同,则内容已损坏,因此请重试该操作。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Static-Large-Object

标头

布尔值

如果此对象是静态大对象清单对象,则设置为 true

Content-Type

标头

字符串

如果操作成功,则此值为对象的 MIME 类型。如果操作失败,则此值为响应主体中错误文本的 MIME 类型。

X-Symlink-Target (可选)

标头

字符串

如果存在,则这是一个符号链接对象。其值为目标对象的相对路径,格式为 <container>/<object>。

X-Symlink-Target-Account (可选)

标头

字符串

如果存在,并且存在 X-Symlink-Target,则这是指向指定值中帐户中对象的跨帐户符号链接。

响应示例

请参阅上面的示例。

POST
/v1/{account}/{container}/{object}

创建或更新对象元数据

创建或更新对象元数据。

要创建或更新自定义元数据,请使用 X-Object-Meta-name 头,其中 name 是元数据项的名称。

注意

元数据键(元数据的名称)必须始终被视为不区分大小写。这些键可以包含 ASCII 7 位字符,这些字符不是控制 (0-31) 字符、DEL 或分隔符字符,具体请参阅 HTTP/1.1。下划线字符会被静默转换为连字符。

除了自定义元数据之外,还可以更新 Content-TypeContent-EncodingContent-DispositionX-Delete-At 系统元数据项。但是,您无法更新其他系统元数据,例如 Content-LengthLast-Modified

您可以使用 COPY 作为 POST 操作的替代方法,方法是复制到同一个对象。使用 POST 操作,您必须指定所有元数据项,而使用 COPY 操作,您只需要指定更改或添加的项。所有元数据在对象复制期间都会保留。如果在请求复制对象时指定元数据(无论是 PUT 还是 COPY),则元数据将覆盖目标(新)对象上的任何冲突键。

注意

虽然使用 COPY 代替 POST 允许仅发送元数据的子集,但它会产生读取和重写整个对象内容的成本。

POST 请求将删除您使用以前的 PUT 或 POST 请求添加的任何现有自定义元数据。因此,您必须在请求中指定所有自定义元数据。但是,除非您在请求头中明确提供,否则系统元数据不会被 POST 请求更改。

您还可以设置 X-Delete-AtX-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。容器名称不能包含斜杠 (/) 字符,因为该字符分隔容器和对象名称。例如,路径 /v1/account/www/pages 指定 www 容器,而不是 www/pages 容器。

object (可选)

路径

字符串

对象的唯一名称。

bulk-delete (可选)

查询

字符串

当 POST 请求中存在 bulk-delete 查询参数时,可以使用单个请求删除多个对象或容器。有关此功能的用法,请参阅 批量删除

extract-archive (可选)

查询

字符串

当 POST 请求中存在 extract-archive 查询参数时,将上传并提取存档(tar 文件)以创建多个对象。有关此功能的用法,请参阅 提取存档

X-Auth-Token (可选)

标头

字符串

身份验证令牌。如果您省略此标头,除非帐户所有者通过访问控制列表 (ACL) 授予您访问权限,否则您的请求将失败。

X-Service-Token (可选)

标头

字符串

服务令牌。有关更多信息,请参阅 OpenStack 服务使用组合令牌

X-Object-Meta-name (可选)

标头

字符串

对象元数据,其中 name 是元数据项的名称。您必须为要添加或更新的每个元数据 name 项指定一个 X-Object-Meta-name 头部。

X-Delete-At (可选)

标头

整数

系统移除对象的时间日期,采用 UNIX Epoch 时间戳格式。例如,1440619048 等同于 Mon, Wed, 26 Aug 2015 19:57:28 GMT。该值应为对应于未来时间的正整数。如果同时设置了 X-Delete-AfterX-Delete-At,则 X-Delete-After 优先。

X-Delete-After (可选)

标头

整数

系统移除对象后的秒数。该值应为正整数。在内部,对象存储系统使用此值生成 X-Delete-At 元数据项。如果同时设置了 X-Delete-AfterX-Delete-At,则 X-Delete-After 优先。

Content-Disposition (可选)

标头

字符串

如果设置,则指定浏览器的覆盖行为。例如,此头部可能指定浏览器使用下载程序保存此文件,而不是显示文件,这是默认行为。

Content-Encoding (可选)

标头

字符串

如果设置,则为 Content-Encoding 元数据的取值。

Content-Type (可选)

标头

字符串

设置对象的 MIME 类型。

X-Trans-Id-Extra (可选)

标头

字符串

额外的事务信息。使用 X-Trans-Id-Extra 请求标头包含额外的信息,以帮助您调试可能发生在大型对象上传和其他对象存储事务中的任何错误。服务器会将 X-Trans-Id-Extra 请求标头值的第一个 32 个字符附加到生成的 X-Trans-Id 响应标头中的事务 ID 值。您必须对额外事务信息进行 UTF-8 编码,然后对其进行 URL 编码,然后将其包含在 X-Trans-Id-Extra 请求标头中。例如,您可以在上传 大型对象(例如图像)时包含额外事务信息。在上传每个片段和清单时,请在 X-Trans-Id-Extra 请求标头中包含相同的值。如果发生错误,您可以在对象存储日志中找到与大型对象上传相关的所有请求。

响应参数

名称

入参

类型

描述

Date

标头

字符串

系统响应请求的日期和时间,使用 RFC 7231 偏好的格式,如本示例所示 Thu, 16 Jun 2016 15:10:38 GMT。时间始终为 UTC。

X-Timestamp

标头

整数

帐户、容器或对象最初创建为当前版本的时间,以 UNIX Epoch 时间戳格式 表示。例如,1440619048 等效于 Mon, Wed, 26 Aug 2015 19:57:28 GMT

Content-Length

标头

字符串

如果操作成功,此值为零 (0) 或响应体中信息或错误文本的长度。

Content-Type (可选)

标头

字符串

如果存在,此值是响应体中信息或错误文本的 MIME 类型。

X-Trans-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。

X-Openstack-Request-Id

标头

字符串

此请求的唯一事务 ID。如果报告问题,您的服务提供商可能需要此值。(与 X-Trans-Id 相同)

端点

如果已配置,则列出帐户的端点。

GET
/v1/endpoints

列出端点

列出对象、帐户或容器的端点。

当云提供商启用列出 /endpoints/ 路径的中间件时,需要数据位置信息的软件可以使用此调用来避免网络开销。云提供商可以将 /endpoints/ 路径映射到另一个资源,因此此确切资源可能因提供商而异。因为它直接连接到中间件,所以该调用未经过身份验证,因此请确保在环境和网络安全时使用此调用。

错误响应代码:201,

请求

此操作不接受请求体。