调用PutBucketInventory接口用于为某个存储空间(Bucket)配置清单(Inventory)规则。

注意事项

您可以通过清单获取Bucket中Object的各类信息,包括Object的数量、大小、存储类型、加密状态等。配置清单规则时,有如下注意事项:

  • 只有Bucket的拥有者以及被授予PutBucketInventory权限的用户才能发起配置清单规则的请求。
  • 配置清单规则前需生成一个RAM角色,该角色需要拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。首次使用清单功能时,建议您通过OSS控制台进行配置。清单规则配置完成后,您可以获取拥有所有权限的RAM角色。有关配置清单规则中RAM角色的权限说明,请参见存储空间清单
  • 单个Bucket最多只能配置1000条清单规则。
  • 配置清单的源Bucket与存放导出的清单文件所在的目标Bucket必须位于同一个Region。

请求语法

重要
  • 请求头中的inventoryId为必选参数,取值与请求参数中的Id保持一致。
  • 仅华北1(青岛)、华北5(呼和浩特)、德国(法兰克福)以及澳大利亚(悉尼)地域支持使用LastModifyBeginTimeStampLastModifyEndTimeStampLowerSizeBoundUpperSizeBound以及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>ETag</Field>
        <Field>StorageClass</Field>
        <Field>IsMultipartUploaded</Field>
        <Field>EncryptionStatus</Field>
     </OptionalFields>
  </InventoryConfiguration>

请求元素

名称类型是否必选示例值描述
Id字符串report1由用户指定的清单名称,清单名称在当前Bucket下必须全局唯一。
IsEnabled布尔true清单功能是否启用的标识。
有效值:
  • true:启用清单功能。
  • false:不启用清单功能。
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筛选文件的存储类型,支持指定多种存储类型。
可选值:
  • Standard:标准存储
  • IA:低频访问
  • Archive:归档存储
  • ColdArchive:冷归档存储
  • All(默认值):所有存储类型
Destination容器不涉及存放清单结果。
OSSBucketDestination容器不涉及清单结果导出后存放的Bucket信息。

父节点:Destination

Format字符串CSV清单文件的文件格式。 清单文件导出后的格式为使用GZIP压缩的CSV文件。

有效值:CSV

父节点:OSSBucketDestination

AccountId字符串100000000000000Bucket所有者授予的账户ID。

父节点:OSSBucketDestination

RoleArn字符串acs:ram::100000000000000:role/AliyunOSSRole具有读取源Bucket所有文件和向目标Bucket写入文件权限的角色名,格式为acs:ram::uid:role/rolename

父节点:OSSBucketDestination

Bucket字符串acs:oss:::bucket_0001存放导出的清单文件的Bucket。

父节点:OSSBucketDestination

Prefix字符串prefix1/清单文件的存储路径前缀。

父节点:OSSBucketDestination

Encryption容器不涉及清单文件的加密方式。

有效值:

  • SSE-OSS:使用OSS完全托管密钥进行加解密。
  • SSE-KMS:使用KMS托管的默认CMK(Customer Master Key)或指定CMK进行加解密。

父节点:OSSBucketDestination

有关服务器端加密的更多信息,请参见服务器端加密

SSE-OSS容器不涉及保存SSE-OSS加密方式的容器。

父节点:Encryption

SSE-KMS容器不涉及保存SSE-KMS加密密钥的容器。

父节点:Encryption

KeyId字符串keyIdKMS密钥ID。

父节点:SSE-KMS

Schedule容器不涉及存放清单导出周期信息的容器。
Frequency字符串Daily清单文件导出的周期。

有效值:

  • Daily:按天导出清单文件。
  • Weekly:按周导出清单文件。

父节点:Schedule

IncludedObjectVersions字符串All是否在清单中包含Object版本信息。
有效值:
  • All:导出Object的所有版本信息。
  • Current:导出Object的当前版本信息。
OptionalFields容器不涉及设置清单结果中包含的配置项。
Field字符串Size清单结果中包含的配置项。
  • Size:Object的大小。
  • LastModifiedDate:Object的最后修改时间。
  • ETag:Object的ETag值,用于标识Object的内容。
  • StorageClass:Object的存储类型。
  • IsMultipartUploaded:是否为通过分片上传方式上传的Object。
  • EncryptionStatus:Object是否加密。

响应元素

此接口仅涉及公共响应头,例如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>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

错误码

错误码HTTP状态码描述
InvalidArgument400传入非法参数。
InventoryExceedLimit400超出清单配置规则的数量限制。
AccessDenied403
  • 发起PutBucketInventory请求时,没有传入用户验证信息。
  • 用户无操作权限。
InventoryAlreadyExist409请求的清单规则已存在。