调用PutBucketInventory接口用于为某个存储空间(Bucket)配置清单(Inventory)规则。
注意事项
您可以通过清单获取Bucket中Object的各类信息,包括Object的数量、大小、存储类型、加密状态等。配置清单规则时,有如下注意事项:
- 配置清单规则前需生成一个RAM角色,该角色需要拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。首次使用清单功能时,建议您通过OSS控制台进行配置。清单规则配置完成后,您可以获取拥有所有权限的RAM角色。有关配置清单规则中RAM角色的权限说明,请参见存储空间清单。 
- 单个Bucket最多只能配置1000条清单规则。 
- 配置清单的源Bucket与存放导出的清单文件所在的目标Bucket必须位于同一个Region。 
权限说明
阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM Policy或Bucket Policy授予操作权限。
| API | Action | 说明 | 
| PutBucketInventory | oss:PutBucketInventory | 配置Bucket的清单(Inventory)规则。 | 
请求语法
- 请求头中的inventoryId为必选参数,取值与请求参数中的Id保持一致。 
- 仅华北1(青岛)、华北5(呼和浩特)、德国(法兰克福)地域支持使用LastModifyBeginTimeStamp、LastModifyEndTimeStamp、LowerSizeBound、UpperSizeBound以及StorageClass选项。 
  PUT /?inventory&inventoryId=report1 HTTP/1.1
  Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  Date: Mon, 31 Oct 2016 12:00:00 GMT
  Authorization: authorization string
  Content-Length: length
  <?xml version="1.0" encoding="UTF-8"?>
    <InventoryConfiguration>
     <Id>report1</Id>
     <IsEnabled>true</IsEnabled>
     <Filter>
           <Prefix>filterPrefix/</Prefix>
           <LastModifyBeginTimeStamp>1637883649</LastModifyBeginTimeStamp>
           <LastModifyEndTimeStamp>1638347592</LastModifyEndTimeStamp>
           <LowerSizeBound>1024</LowerSizeBound>
           <UpperSizeBound>1048576</UpperSizeBound>
           <StorageClass>Standard,IA</StorageClass>
     </Filter>
     <Destination>
        <OSSBucketDestination>
           <Format>CSV</Format>
           <AccountId>1000000000000000</AccountId>
           <RoleArn>acs:ram::1000000000000000:role/AliyunOSSRole</RoleArn>
           <Bucket>acs:oss:::destination-bucket</Bucket>
           <Prefix>prefix1</Prefix>
           <Encryption>
              <SSE-KMS>
                 <KeyId>keyId</KeyId>
              </SSE-KMS>
           </Encryption>
        </OSSBucketDestination>
     </Destination>
     <Schedule>
        <Frequency>Daily</Frequency>
     </Schedule>
     <IncludedObjectVersions>All</IncludedObjectVersions>
     <OptionalFields>
        <Field>Size</Field>
        <Field>LastModifiedDate</Field>
        <Field>TransistionTime</Field>        
        <Field>ETag</Field>
        <Field>StorageClass</Field>
        <Field>IsMultipartUploaded</Field>
        <Field>EncryptionStatus</Field>
     </OptionalFields>
  </InventoryConfiguration>请求元素
| 名称 | 类型 | 是否必选 | 示例值 | 描述 | 
| Id | 字符串 | 是 | report1 | 自定义清单名称,要求如下: 
 | 
| IsEnabled | 布尔 | 是 | true | 清单功能是否启用的标识。 有效值: 
 | 
| Filter | 容器 | 否 | 不涉及 | 清单筛选的前缀。指定前缀后,清单将筛选出符合前缀设置的对象。 | 
| Prefix | 字符串 | 否 | Pics/ | 筛选规则的匹配前缀。 父节点:Filter | 
| LastModifyBeginTimeStamp | 字符串 | 否 | 1637883649 | 筛选文件最后修改时间的起始时间戳,单位为秒。 取值范围:[1262275200, 253402271999] | 
| LastModifyEndTimeStamp | 字符串 | 否 | 1638347592 | 筛选文件最后修改时间的终止时间戳,单位为秒。 取值范围:[1262275200, 253402271999] | 
| LowerSizeBound | 字符串 | 否 | 1024 | 筛选文件的最小大小,单位为B。 取值范围:大于等于0 B,小于等于48.8 TB。 | 
| UpperSizeBound | 字符串 | 否 | 1048576 | 筛选文件的最大大小,单位为B。 取值范围:大于0 B,小于等于48.8 TB。 | 
| StorageClass | 字符串 | 否 | Standard,IA | 筛选文件的存储类型,支持指定多种存储类型。 可选值: 
 | 
| Destination | 容器 | 是 | 不涉及 | 存放清单结果。 | 
| OSSBucketDestination | 容器 | 是 | 不涉及 | 清单结果导出后存放的Bucket信息。 父节点:Destination | 
| Format | 字符串 | 是 | CSV | 清单文件的文件格式。 清单文件导出后的格式为使用GZIP压缩的CSV文件。 有效值:CSV 父节点:OSSBucketDestination | 
| AccountId | 字符串 | 是 | 100000000000000 | Bucket所有者授予的账户ID。 父节点:OSSBucketDestination | 
| RoleArn | 字符串 | 是 | acs:ram::100000000000000:role/AliyunOSSRole | 具有读取源Bucket所有文件和向目标Bucket写入文件权限的角色名,格式为 父节点:OSSBucketDestination | 
| Bucket | 字符串 | 是 | acs:oss:::bucket_0001 | 存放导出的清单文件的Bucket。 父节点:OSSBucketDestination | 
| Prefix | 字符串 | 否 | prefix1/ | 清单文件的存储路径前缀。 父节点:OSSBucketDestination | 
| Encryption | 容器 | 否 | 不涉及 | 清单文件的加密方式。 有效值: 
 父节点:OSSBucketDestination 有关服务器端加密的更多信息,请参见服务器端加密。 | 
| SSE-OSS | 容器 | 否 | 不涉及 | 保存SSE-OSS加密方式的容器。 父节点:Encryption | 
| SSE-KMS | 容器 | 否 | 不涉及 | 保存SSE-KMS加密密钥的容器。 父节点:Encryption | 
| KeyId | 字符串 | 否 | keyId | KMS密钥ID。 父节点:SSE-KMS | 
| Schedule | 容器 | 是 | 不涉及 | 存放清单导出周期信息的容器。 | 
| Frequency | 字符串 | 是 | Daily | 清单文件导出的周期。 有效值: 
 父节点:Schedule | 
| IncludedObjectVersions | 字符串 | 是 | All | 是否在清单中包含Object版本信息。 有效值: 
 | 
| OptionalFields | 容器 | 否 | 不涉及 | 设置清单结果中包含的配置项。 | 
| Field | 字符串 | 否 | Size | 清单结果中包含的配置项。 
 | 
响应元素
此接口仅涉及公共响应头,例如Content-Length、Date等。更多信息,请参见公共响应头(Common Response Headers)。
示例
- 请求示例 - PUT /?inventory&inventoryId=report1 HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Mon, 31 Oct 2016 12:00:00 GMT Authorization: authorization string Content-Length: length <?xml version="1.0" encoding="UTF-8"?> <InventoryConfiguration> <Id>report1</Id> <IsEnabled>true</IsEnabled> <Filter> <Prefix>Pics/</Prefix> <LastModifyBeginTimeStamp>1637883649</LastModifyBeginTimeStamp> <LastModifyEndTimeStamp>1638347592</LastModifyEndTimeStamp> <LowerSizeBound>1024</LowerSizeBound> <UpperSizeBound>1048576</UpperSizeBound> <StorageClass>Standard,IA</StorageClass> </Filter> <Destination> <OSSBucketDestination> <Format>CSV</Format> <AccountId>100000000000000</AccountId> <RoleArn>acs:ram::100000000000000:role/AliyunOSSRole</RoleArn> <Bucket>acs:oss:::destbucket</Bucket> <Prefix>prefix1/</Prefix> <Encryption> <SSE-KMS> <KeyId>keyId</KeyId> </SSE-KMS> </Encryption> </OSSBucketDestination> </Destination> <Schedule> <Frequency>Daily</Frequency> </Schedule> <IncludedObjectVersions>All</IncludedObjectVersions> <OptionalFields> <Field>Size</Field> <Field>LastModifiedDate</Field> <Field>TransistionTime</Field> <Field>ETag</Field> <Field>StorageClass</Field> <Field>IsMultipartUploaded</Field> <Field>EncryptionStatus</Field> </OptionalFields> </InventoryConfiguration>
- 返回示例 - HTTP/1.1 200 OK x-oss-request-id: 56594298207FB3044385**** Date: Mon, 31 Oct 2016 12:00:00 GMT Content-Length: 0 Server: AliyunOSS
SDK
此接口所对应的各语言SDK如下:
命令行工具ossutil
PutBucketInventory接口所对应的ossutil命令,请参见put-bucket-inventory。
错误码
| 错误码 | HTTP状态码 | 描述 | 
| InvalidArgument | 400 | 传入非法参数。 | 
| InventoryExceedLimit | 400 | 超出清单配置规则的数量限制。 | 
| AccessDenied | 403 | 
 | 
| InventoryAlreadyExist | 409 | 请求的清单规则已存在。 |