对象存储OSS支持清单(Inventory)功能,可定期将您存储空间(Bucket)内的文件(Object)信息导出到指定的Bucket内,帮助您更好地了解Object的状态,简化并加速工作流和大数据作业任务等。

Bucket清单功能以周为单位,对您Bucket内的Object进行扫描,扫描完成后会生成CSV格式的清单报告,并存储到您指定的Bucket内。在清单报告中,您可以有选择地导出指定Object的元数据信息,如文件大小、加密状态等。
说明 清单功能扫描Object时,仅扫描Object的元数据等信息,不会直接读取Object内容。

操作方式

操作方式 说明
控制台 Web应用程序,直观易用
命令行工具ossutil 命令行工具,性能好

功能说明

清单任务配置完成后,会按清单规则指定的导出周期生成清单报告,具体的存储目录树结构如下:
- dst_bucket/
 - destination-prefix/
   - src_bucket/
     - inventory_id/
       - YYYY-MM-DDTHH-MMZ/
         - manifest.json
         - manifest.checksum
       - data/
         - 745a29e3-bfaa-490d-9109-47086afcc8f2.csv.gz
  • destination-prefix/:该目录根据设置的清单报告名前缀生成,如果清单报告名前缀设置为空,将省略该目录,即变成dst_bucket/src_bucket/……
  • src_bucket/:该目录根据配置清单报告的源Bucket名生成。
  • inventory_id/:该目录根据清单任务的规则名称生成。
  • YYY-MM-DDTHH-MMZ/:该目录是标准的格林威治时间戳,表示开始扫描Bucket的时间,例如2020-05-17T16-00Z。该目录下包含了manifest.jsonmanifest.checksum文件。
  • data/:该目录下存放了具体的清单文件。
清单功能生成的具体文件如下:
  • 清单文件
    清单文件存储在data目录中,包含清单功能导出的文件信息。您可以通过manifest.json文件的fileSchema字段,来获取清单文件的字段列信息。包含所有字段列的清单文件从左到右分别为:Bucket、Key、VersionId、IsLatest、IsDeleteMarker、Size、LastModifiedDate、ETag、StorageClass、IsMultipartUploaded、EncryptionStatus。清单
    名称 描述
    Bucket 执行清单任务的源Bucket名称。
    Key Bucket中Object的名称,采用URL编码形式,必须解码查看。
    VersionId Object的版本ID。若Bucket已开启版本控制功能,您在配置清单规则时可以选择导出当前版本或所有版本。若配置只导出当前版本,则不存在该字段。版本控制功能介绍请参见版本控制介绍
    IsLatest 若Object有多个版本,且当前版本为最新版本,则该字段值为True,否则为False。若配置只导出最新版本,则不存在该字段。
    IsDeleteMarker 若Object有多个版本,且当前版本为删除标记,则该字段值为True,否则为False。若配置只导出最新版本,则不存在该字段。
    Size Object大小。
    LastModifiedDate Object的最后修改时间。
    ETag Object生成时会创建相应的ETag (entity tag) ,用于标识一个Object的内容。
    • 通过PutObject接口创建的Object,ETag值是其内容的MD5值。
    • 通过其他方式创建的Object,ETag值是其内容的UUID。
    StorageClass Object的存储类型。
    IsMultipartUploaded 标记Object是否通过分片上传生成。如果是,则该字段值为True,否则为False
    EncryptionStatus Object的加密状态。若Object已加密,则该字段值为True,否则为False
  • manifest文件
    manifest文件包含manifest.jsonmanifest.checksum
    • manifest.json:提供了有关清单的元数据和其他基本信息,这些信息包括如下内容。
      • creationTimestamp:以纪元日期格式创建的时间戳,显示生成清单报告时开始扫描存储空间的时间。
      • destinationBucket:存储清单文件的目标Bucket。
      • fileFormat:清单文件的格式。
      • fileSchema:清单文件包含的字段。
      • files:包含清单文件的文件名、文件大小、MD5校验和。
      • sourceBucket:创建清单文件的源Bucket。
      • version:清单版本。
    • manifest.checksum:包含manifest.json文件的MD5。

注意事项

  • 导出清单文件的过程中,由于Object的创建、删除或覆盖等操作,可能导致最终输出的清单列表中不一定包含所有的Object。最后修改时间早于manifest.json中createTimeStamp的Object会出现在清单文件中。建议对清单列表中的Object进行操作之前,先使用HeadObject接口检查Object的属性,详情请参见HeadObject
  • 单个Bucket最多只能配置1000条清单规则,通过控制台最多可配置和展示10条清单规则。
  • 配置清单的源Bucket与存放导出的清单文件所在的目标Bucket必须位于同一个Region。
  • 建议您根据源Bucket内的文件数量配置清单任务:
    • 文件数量为小于100亿,可以以周为单位生成清单文件。
    • 文件数量大于100亿,建议以周为单位,并针对不同的文件前缀设置不同的清单任务,保证每个清单任务针对的文件不超过100亿个。
  • 若源Bucket没有任何文件,或清单任务设置的前缀没有匹配到任何文件,则不会生成清单文件。
  • 通过API、SDK、ossutil配置清单规则前需生成一个RAM角色,该角色拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。配置角色的步骤请参见创建可信实体为阿里云服务的RAM角色
  • 通过OSS控制台配置清单规则会生成一个名为AliyunOSSRole角色,子账号配置清单任务时必须有调用该角色的权限。
  • 配置清单规则后,OSS会按照清单规则一直生成清单文件,直至您删除该规则。为避免清单文件占用您的存储空间,请及时清理不再需要的清单文件。

常见问题

如何快速得知清单已生成?

涉及Object较多时,清单生成需要一定的时间,若您希望第一时间获知清单已生成,建议配置事件通知规则。您可以在生成清单的目标Bucket中配置事件通知类型为PutObject,当清单生成之后,您会收到Object生成的提醒。配置事件通知方式请参见配置事件通知