更新时间:2025-01-03 GMT+08:00

桶清单简介

桶清单功能可以定期生成桶内对象的元数据信息,通过查看这些信息,可以帮助您更好地了解桶内对象的状态。

生成的桶清单为CSV格式的文件,您可以规定桶清单在生成后自动上传到指定桶中。

您可以通过对象前缀过滤需要生成清单的对象,指定清单的生成周期(每天或每周),选择是否列出对象的所有版本。同时您还可以根据实际业务需要,指定清单中要包含的对象元数据内容,包括文件大小、上次修改时间、存储类别、ETag、分段上传、复制状态、加密状态等。

约束与限制

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

清单文件中包含的内容

清单文件中的内容由设置的清单配置而定,所有可能的字段见表1

表1 清单中列出的对象元数据

元数据

说明

Bucket

源桶的桶名。

Key

键值,即对象的名称,一个桶里的每个对象拥有唯一的对象键值。(清单文件中的对象名采用UTF-8的URL编码,需解码后才能使用)。

VersionId

对象的版本id(如果清单配置中的ObjectVersions值为Current version only时,则不包含此字段)。

IsLatest

如果对象的版本为最新,则设置为True(如果清单配置中的ObjectVersions值为Current version only时,则不包含此字段)。

IsDeleteMarker

在桶开启多版本时,如果删除一个对象,会生成一条新的对象元数据,并将该条元数据的IsDeleteMarker标记为true(如果清单配置中的ObjectVersions值为Current version only时,则不包含此字段)。

Size

对象大小(以字节为单位)。

LastModifiedDate

对象创建日期或上次修改日期。

ETag

对象MD5的16进制摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。

StorageClass

对象的存储类别。

IsMultipartUploaded

对象是否是多段上传对象。

ReplicationStatus

对象的跨区域复制状态。

EncryptionStatus

对象的加密状态。

生成的清单文件对象的名称

生成的清单文件对象的名称如下:

destinationPrefix/sourceBucketName/inventoryId/yyyy-MM-dd'T'HH-mm'Z'/files/UUID_index.csv
  • destinationPrefix:清单配置中的目标前缀,生成的清单文件以此前缀开头,可用于对清单文件进行分类存放,如果没有设置则默认为BucketInventory。
  • sourceBucketName:清单文件对应的源桶,可以防止当不同的源桶都配置了相同的目标桶时产生冲突。
  • inventoryId:可以防止当一个桶的多条清单配置中配置了相同的目标桶时产生冲突。
  • yyyy-MM-dd'T'HH-mm'Z':生成本次清单文件时开始扫描存储桶的开始时间和日期,清单文件中可能不会生成在此时间之后上传的对象。
  • UUID_index.csv:清单文件之一。

manifest文件

当桶内对象很多的时候,单条清单配置可能会生成多个清单文件,生成清单文件需要一定时间。例如,桶内有20万个对象时,生成所有清单文件需要约1.5分钟。在全部清单文件生成完成之后1到2小时会生成一个manifest.json文件,manifest.json文件中包含了该条清单本次生成的所有清单文件的相关信息,具体信息如下:

  • sourceBucket:源桶的桶名
  • destinationBucket:目标桶的桶名
  • version:清单的版本
  • fileFormat:清单文件的格式
  • fileSchema:清单文件中包含的对象元数据字段
  • files:所有清单文件列表
  • key:清单文件名称
  • size:清单文件的大小(以字节为单位)
  • inventoriedRecord:文件中包含的清单记录条数
下面是一个简单的manifest.json文件示例。
{
        "sourceBucket":"user001",
        "destinationBucket":"bucket001",
        "version":"2019-01-03",
        "fileFormat":"CSV",
        "fileSchema":"Bucket,Key,Size,LastModifiedDate,ETag,StorageClass,IsMultipartUploaded,ReplicationStatus,EncryptionStatus",
        "files":[
                {
                        "key":"inventory%2Fuser001%2Ftest_id%2F2019-01-03T12-28Z%2Ffiles%2F0000016813AF58E66806C1E2D7F15155_1.csv",
                        "size":6705647390,
                        "inventoriedRecord":70585762,
                }
        ]
}

生成的manifest文件对象的对象名如下,各个字段的含义见生成的清单文件对象的名称

destinationPrefix/sourceBucketName/inventoryId/yyyy-MM-dd'T'HH-mm'Z'/manifest.json

symlink.txt文件

symlink.txt文件记录了桶清单文件的路径,用于在大数据场景下业务快速找到所有桶清单。Apache Hive兼容OBS桶清单功能产生的symlink.txt文件,Hive能够自动查找到symlink.txt文件和symlink.txt文件中记录的清单文件。

生成的symlink.txt文件对象的对象名如下,各个字段的含义见生成的清单文件对象的名称

destinationPrefix/sourceBucketName/inventoryId/hive/dt=YYYY-MM-DD-00-00/symlink.txt