更新时间:2024-04-15 GMT+08:00

获取桶清单

功能介绍

OBS使用GET操作来获取指定桶的某个清单配置。

要正确执行此操作,需要确保执行者有GetBucketInventoryConfiguration权限。桶拥有者默认具有此权限,并且可以将此权限授予其他人。

请求消息样式

GET /?inventory&id=configuration-id HTTP/1.1
User-Agent: curl/7.29.0
Host: bucketname.obs.region.example.com
Accept: */*
Date: date
Authorization: authorization string

请求消息参数

表1 请求消息参数

参数

描述

是否必选

id

需要获取的清单配置的id。

类型:String

规格:最长64字节

默认值:无

有效字符:"a-z"、"A-Z"、"0-9"、"-"、"_"和"."

请求消息头

该请求使用公共消息头,具体参见表3

请求消息元素

此请求消息中不使用消息元素。

响应消息样式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
HTTP/1.1 status_code
Server: OBS
x-obs-request-id: request id
x-obs-id-2: id
Content-Type: application/xml
Date: date
Content-Length: length

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<InventoryConfiguration  xmlns="http://obs.region.example.com/doc/2015-06-30/">
  <Id>configuration-id</Id>
  <IsEnabled>true</IsEnabled>
  <Destination>
    <Format>CSV</Format>
    <Bucket>destbucket</Bucket>
    <Prefix>prefix</Prefix>
  </Destination>
  <Schedule>
    <Frequency>Daily</Frequency>
  </Schedule>
  <IncludedObjectVersions>Current</IncludedObjectVersions>
  <OptionalFields>
    <Field>Size</Field>
    <Field>LastModifiedDate</Field>
    <Field>ETag</Field>
    <Field>StorageClass</Field>
    <Field>IsMultipartUploaded</Field>
    <Field>ReplicationStatus</Field>
    <Field>EncryptionStatus</Field>
  </OptionalFields>
</InventoryConfiguration>

响应消息头

该请求的响应消息使用公共消息头,具体请参考表1

响应消息元素

在此请求返回的响应消息体中包含的配置元素如表2

表2 桶清单响应消息元素

名称

描述

InventoryConfiguration

清单配置。

类型:Container

父节点:无

子节点:Id、IsEnabled、Filter、Destination、Schedule、IncludedObjectVersions以及OptionalFields

Id

清单配置的id,必须和请求参数中的清单配置id一致。

类型:String

规格:最长64字节

默认值:无

有效字符:"a-z"、"A-Z"、"0-9"、"-"、"_"和"."

父节点:InventoryConfiguration

IsEnabled

规则是否启用,如果设置为true,则生成清单,反之不生成。

类型:Boolean

有效值:true、false

父节点:InventoryConfiguration

Filter

清单过滤器配置,清单只包含符合过滤器规则的对象(只支持按对象名前缀进行过滤),如果没有配置过滤器,则包含所有对象。

类型:Container

父节点:InventoryConfiguration

子节点:Prefix

Prefix

前缀过滤条件,清单文件中只生成以此前缀开头的对象列表。

类型:String

父节点:Filter

Schedule

清单文件的生成周期。

类型:Container

父节点:InventoryConfiguration

子节点:Frequency

Frequency

清单文件的生成周期,只支持按天和按周生成清单,第一次配置完桶清单,任务会在一个小时内启动,之后每隔一个周期启动一次。

类型:String

父节点:Schedule

有效值:Daily、Weekly

Destination

清单的目标配置。

类型:Container

父节点:InventoryConfiguration

Format

生成的清单文件的格式,现只支持CSV格式。

类型:String

父节点:Destination

有效值:CSV

Bucket

存放清单文件的目标桶的桶名。

类型:String

父节点:Destination

Prefix

生成的清单文件对象名会以此前缀开头,如果不配置前缀,则生成的清单文件对象名默认以BucketInventory开头。

类型:String

父节点:Destination

IncludedObjectVersions

清单文件中包含对象的多版本配置。

  • 如果设置为All,清单会包含对象所有的版本,清单中会增加版本相关的字段:VersionId、IsLatest、和DeleteMarker。
  • 如果设置为Current,则清单文件中只会列出当前版本信息,不会出现版本相关字段。

类型:String

父节点:InventoryConfiguration

有效值:All、Current

OptionalFields

在此选项中可以添加一些额外的对象元数据字段,生成的清单文件中会包含OptionalFields中配置的字段。

类型:Container

父节点:InventoryConfiguration

子节点:Field

Field

可选字段类型,OptionalFields可以包含多个Field元素。

类型:String

父节点:OptionalFields

有效值:Size、LastModifiedDate、StorageClass、ETag、IsMultipartUploaded、ReplicationStatus、EncryptionStatus。

错误响应消息

除了公共的错误码外,此接口还会返回一些其他的错误码。下表中列出本接口的一些常见错误,以及可能原因。如表3

表3 获取桶清单的错误码列表

错误码

描述

HTTP状态码

NoSuchInventoryConfiguration

没有指定Id对应的清单配置。

404 Not Found

请求示例

GET /?inventory&id=id1 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.example.com
Accept: */*
Date: Tue, 08 Jan 2019 09:32:24 +0000
Authorization: OBS UDSIAMSTUBTEST000001:ySWncC9M08jNsyXdJLSMJkpi7XM=

响应示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 000001682CB4C2EE6808A0D8DF9F3D00
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSBjn5O7Jv9CqvUMO0BenehRdil1n8rR
Content-Type: application/xml
Date: Tue, 08 Jan 2019 09:04:30 GMT
Content-Length: 626

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<InventoryConfiguration  xmlns="http://obs.region.example.com/doc/2015-06-30/">
  <Id>id1</Id>
  <IsEnabled>true</IsEnabled>
  <Destination>
    <Format>CSV</Format>
    <Bucket>bucket</Bucket>
    <Prefix>prefix</Prefix>
  </Destination>
  <Schedule>
    <Frequency>Daily</Frequency>
  </Schedule>
  <IncludedObjectVersions>Current</IncludedObjectVersions>
  <OptionalFields>
    <Field>Size</Field>
    <Field>LastModifiedDate</Field>
    <Field>ETag</Field>
    <Field>StorageClass</Field>
    <Field>IsMultipartUploaded</Field>
    <Field>ReplicationStatus</Field>
    <Field>EncryptionStatus</Field>
  </OptionalFields>
</InventoryConfiguration>