设置桶清单-SetBucketInventory
功能介绍
OBS使用PUT操作为一个桶配置清单规则,每个桶最多可以配置10条清单规则,有关更多桶清单的介绍和使用限制,请参考《对象存储服务用户指南》的桶清单章节。
要使用此操作,需确保执行者有PutBucketInventoryConfiguration操作的权限 。桶拥有者默认具有此权限,并且可以将此权限授予其他人。
有关权限控制的更多信息请参考《对象存储服务权限配置指南》的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权限,具体操作请参见自定义创建桶策略。
请求消息样式
PUT /?inventory&id=configuration-id HTTP/1.1
User-Agent: curl/7.29.0
Host: bucketname.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: date
Authorization: authorization string
Content-Length: length
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> 请求消息参数
参数名称 | 参数类型 | 是否必选 | 描述 |
|---|---|---|---|
id | String | 是 | 参数解释: 清单配置的id,必须和消息体中的清单配置id一致。 规格:最长64字节 有效字符:"a-z"、"A-Z"、"0-9"、"-"、"_"和"." |
请求消息头
该请求使用公共消息头,具体参见表3。
请求消息元素
在此请求中,需要在请求的消息体中配置桶的清单。清单的配置信息以XML格式上传。具体的配置元素如表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 | 清单文件中包含对象的多版本配置。 类型:String 父节点:InventoryConfiguration 有效值:
| 是 |
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 |
响应消息头
该请求的响应消息使用公共消息头,具体请参考表1。
响应消息元素
该请求的响应消息中不带有响应元素。
错误响应消息
除了公共的错误码外,此接口还会返回一些其他的错误码。下面列出本接口的一些常见错误,以及可能原因,如表3。
请求示例
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,无需手动计算签名。
Python不支持 | C不支持 | Go不支持 | BrowserJS不支持 | .NET不支持 | Android不支持 | iOS不支持 | PHP不支持 | Node.js不支持 |

