文档首页/ 对象存储服务 OBS/ API参考/ 桶API/ 桶清单/ 设置桶清单-SetBucketInventory
更新时间:2026-04-15 GMT+08:00
分享

设置桶清单-SetBucketInventory

功能介绍

桶清单功能可以定期生成桶内对象的元数据信息,通过查看这些信息,可以帮助您更好地了解桶内对象的状态,调用本接口可以配置桶清单功能。有关更多桶清单的介绍和使用限制,请参见桶清单

接口约束

表1 桶清单约束限制

限制类型

限制内容

桶版本限制

只有OBS 3.0的桶支持配置清单,目标桶无OBS版本限制。

清单数量限制

一个桶最多支持10条桶清单。

源桶和目标桶限制

  • 桶清单配置的源桶和目标桶必须归属同一个账号。
  • 桶清单配置的源桶和目标桶必须归属同一个区域。
  • 桶清单中配置的目标桶不能开启桶服务端加密

功能限制

  • 只支持生成CSV格式的清单文件。
  • 桶清单筛选条件目前仅支持设置为所有对象或指定前缀的对象。
  • 同一个桶中多条清单规则的筛选条件不能彼此包含:
    • 如果已经存在针对桶中所有对象的规则,则无法再创建按对象名前缀筛选的规则。如需创建,要先删除针对所有对象的规则。
    • 如果已经存在按对象名前缀筛选的规则,则无法再创建针对桶中所有对象的规则。如需创建,要先删除所有按对象名前缀筛选的规则。
    • 如果已经存在某个按对象名前缀筛选的规则(如前缀ab),则无法再创建与其存在包含或被包含关系的规则(如前缀a或前缀abc)。如需创建,要先删除存在包含或被包含关系的规则。
  • 桶清单加密方式目前只支持SSE-KMS。

权限限制

清单文件使用OBS系统用户上传到目标桶,目标桶必须给OBS系统用户写权限,即目标桶必须包含一条Principal取值则固定为{"Service": "obs"},授予写权限的桶策略。

其他

  • 暂不对桶清单功能收费,桶清单生成后只按照存储容量计费。
  • 不支持联邦用户使用桶清单。

授权信息

您必须是桶拥有者或拥有设置桶清单的权限,才能调用本接口,建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见OBS不同权限控制方式的区别

  • 如果使用IAM授权,那么请在“角色与策略授权”、“身份策略授权”两种IAM授权方式中选择一种,并配置相应权限:
    • 如果使用角色与策略授权(旧版IAM,即IAM v3接口),需具备obs:bucket:PutBucketInventoryConfiguration权限,授权操作请参见创建IAM自定义策略
    • 如果使用身份策略授权(新版IAM,即IAM v5接口),如下表所示,需具备obs:bucket:putBucketInventoryConfiguration权限,授权操作请参见创建IAM自定义身份策略

      授权项

      Action

      访问级别

      Access Level

      资源类型(*为必须)

      Resource Type (*: required)

      条件键

      Condition Key

      别名

      Alias

      依赖的授权项

      Dependencies

      obs:bucket:putBucketInventoryConfiguration

      Write

      bucket *

      -

      -

      -

      • obs:EpochTime
      • obs:SourceIp
      • obs:TlsVersion
      • obs:CustomDomain
  • 如果使用桶策略进行授权,需具备obs:bucket:PutBucketInventoryConfiguration权限,具体操作请参见自定义创建桶策略

请求消息样式

以下为请求消息样例,请将示例中的BucketName修改为您的桶名,RegionID修改为桶所在的区域ID,可参考支持区域获取区域ID。

PUT /?inventory&id=configuration-id  HTTP/1.1
User-Agent: curl/7.29.0
Host: BucketName.obs.RegionID.myhuaweicloud.com 
Accept: */*
Date: GMT Date
Authorization: SignatureValue
Content-Length: BodyLength
Expect: 100-continue

<InventoryConfiguration>
   <Id>configuration-id</Id>
   <IsEnabled>true</IsEnabled>
   <Filter>
         <Prefix>inventoryTestPrefix</Prefix>
   </Filter>
   <Destination>
         <Format>CSV</Format>
         <Bucket>destbucket</Bucket>
         <Prefix>dest-prefix</Prefix>
   </Destination>
   <Schedule>
          <Frequency>Daily</Frequency>
   </Schedule>
   <IncludedObjectVersions>All</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>

URI参数(URI Parameters)

表2 URI参数

参数名称

参数类型

是否必选

描述

id

String

参数解释:

清单配置的id,必须和消息体中的清单配置id一致。

规格:最长64字节

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

请求头参数(Request headers)

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

请求体参数(Request body)

在此请求中,需要在请求的消息体中配置桶的清单。清单的配置信息以XML格式上传。具体的配置元素如表3

表3 桶清单配置请求体参数

名称

描述

是否必选

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

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

类型:String

父节点:InventoryConfiguration

有效值:

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

OptionalFields

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

类型:Container

父节点:InventoryConfiguration

子节点:Field

Field

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

类型:String

父节点:OptionalFields

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

响应消息样式

1
2
3
4
5
HTTP/1.1 status_code
x-obs-request-id: request id
x-obs-id-2: id
Date: date
Content-Length: length

响应头 (Response Headers)

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

响应体 (Response Body)

本接口的响应消息中不携带响应体。

错误响应消息

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

表4 设置桶清单错误码列表

错误码

描述

HTTP状态码

MalformedXML

清单的XML配置格式错误。

400 Bad Request

InvalidArgument

无效参数。

400 Bad Request

InventoryCountOverLimit

配置清单数量超过最大限制。

400 Bad Request

PrefixExistInclusionRelationship

清单配置中的前缀存在包含关系。

400 Bad Request

请求示例

PUT /?inventory&id=test_id HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Tue, 08 Jan 2019 08:17:10 +0000
Authorization: OBS UDSIAMSTUBTEST000001:/e2fqSfzLDb+0M36D4Op/s5KKr0=
Content-Length: 600
Expect: 100-continue

<InventoryConfiguration>
   <Id>test_id</Id>
   <IsEnabled>true</IsEnabled>
   <Filter>
         <Prefix>inventoryTestPrefix</Prefix>
   </Filter>
   <Destination>
         <Format>CSV</Format>
         <Bucket>destbucket</Bucket>
         <Prefix>dest-prefix</Prefix>
   </Destination>
   <Schedule>
          <Frequency>Daily</Frequency>
   </Schedule>
   <IncludedObjectVersions>All</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
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 000001682C8545B0680893425D60AB83
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSIGTuRtBfo7lpHSt0ZknhdDHmllwd/p
Date: Tue, 08 Jan 2019 08:12:38 GMT
Content-Length: 0

使用SDK调用接口

建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作,直接调用SDK接口函数即可访问OBS,无需手动计算签名。

Java

Python不支持

C不支持

Go不支持

BrowserJS不支持

.NET不支持

Android不支持

iOS不支持

PHP不支持

Node.js不支持

相关文档

  • 了解更多设置桶清单相关介绍,请参见桶清单
  • API操作涉及的计费项参见计费项

相关文档