inventory(清单)

您可以使用清单功能获取存储空间(Bucket)中指定文件(Object)的数量、大小、存储类型、加密状态等信息。相对于GetBucket (ListObjects)接口,在海量Object的列举场景中,建议您优先使用清单功能。本文介绍如何通过inventory命令添加、查询、列举或删除Bucket清单规则。

注意事项

  • 要添加清单规则,您必须具有oss:PutBucketInventory权限;要查询清单规则,您必须具有oss:GetBucketInventory权限;要删除清单规则,您必须具有oss:DeleteBucketInventory权限。具体操作,请参见RAM用户授权自定义的权限策略

  • ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

  • 关于Bucket清单功能的更多信息,参见存储空间清单

添加清单规则

添加清单规则步骤如下:

  1. 生成RAM角色,该角色需拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。配置角色的步骤请参见创建可信实体为阿里云服务的RAM角色

  2. 创建本地文件,并在文件中配置XML格式的清单规则。

  3. ossutil先从本地文件中读取清单配置,然后将读取到清单配置添加到指定的Bucket。

  • 命令格式

    ossutil inventory --method put oss://bucketname local_xml_file

    参数说明如下:

    参数

    说明

    bucketname

    添加清单规则的存储空间名称。

    local_xml_file

    配置清单规则的本地文件名称,例如localfile.xml

  • 使用示例

    1. 创建本地文件localfile.xml,并根据使用场景写入不同的清单规则。

      例如,将清单规则名称设置为inventorytest,以周为单位将清单报告导出至目标存储空间destbucket,清单内容中包含destbucket中与前缀dir/匹配的所有文件的存储类型、其最后更新时间以及分片上传状态等,并使用AES256加密算法加密清单文件。

      <?xml version="1.0" encoding="UTF-8"?>
        <InventoryConfiguration>
            <Id>inventorytest</Id>
            <IsEnabled>true</IsEnabled>
            <Filter>
              <Prefix>dir/</Prefix>
            </Filter>
            <Destination>
                <OSSBucketDestination>
                    <Format>CSV</Format>
                    <AccountId>1746495857602745</AccountId>
                    <RoleArn>acs:ram::174649585760****:role/AliyunOSSRole</RoleArn>
                    <Bucket>acs:oss:::destbucket</Bucket>
                    <Encryption>
                        <SSE-OSS></SSE-OSS>
                    </Encryption>
                </OSSBucketDestination>
            </Destination>
            <Schedule>
                <Frequency>Weekly</Frequency>
            </Schedule>
            <IncludedObjectVersions>All</IncludedObjectVersions>
            <OptionalFields>
                <Field>LastModifiedDate</Field>
                <Field>StorageClass</Field>
                <Field>IsMultipartUploaded</Field>
                <Field>ETag</Field>
                <Field>EncryptionStatus</Field>
                <Field>Size</Field>
            </OptionalFields>
        </InventoryConfiguration>
      重要

      您可以为Bucket添加多条清单规则,规则名称(ID)是清单配置的唯一标识。若添加的规则ID已存在,则返回409错误。

    2. examplebucket添加清单规则。

      ossutil inventory --method put oss://examplebucket localfile.xml

      以下输出结果表明已成功添加清单规则。

      0.299514(s) elapsed

查询指定清单规则

  • 命令格式

    ossutil inventory --method get oss://bucketname inventory_id [--local_xml_file ]

    参数说明如下:

    参数

    说明

    bucketname

    查询清单配置的目标Bucket名称。

    inventory_id

    清单规则名称。

    local_xml_file

    用于存放清单配置的本地文件名称,例如localfile.txt。如果未指定此参数,则清单配置将直接输出到屏幕。

  • 使用示例

    ossutil inventory --method get oss://examplebucket inventorytest localfile.txt

    以下输出结果表明已成功查询examplebucket中配置规则IDinventorytest的清单内容,并将清单结果写入本地localfile.txt文件。

    0.212407(s) elapsed

查询所有清单规则

  • 命令格式

    ossutil inventory --method list oss://bucketname [--local_xml_file ] [--marker <value>]

    参数说明如下:

    参数

    说明

    bucketname

    获取清单配置的目标Bucket名称。

    local_xml_file

    用于存放清单配置的本地XML文件名称。如果未指定此参数,则清单配置将直接输出到屏幕。

    marker

    清单过滤条件,只对与指定前缀匹配的Object生成清单文件。如果此项置空,表示对目标Bucket中的所有Object生成清单文件。

  • 使用示例

    ossutil inventory --method list oss://examplebucket localfile.txt dest

    以下输出结果表明已成功查询examplebucket下与dest前缀匹配的文件包含的所有清单规则,并将清单结果写入本地localfile.txt文件。

    0.216897(s) elapsed

删除指定清单规则

  • 命令格式

    ossutil inventory --method delete oss://bucketname inventory_id

    参数说明如下:

    参数

    说明

    bucketname

    删除清单配置的目标Bucket名称。

    inventory_id

    清单规则名称。

  • 使用示例

    ossutil inventory --method delete oss://examplebucket inventorytest

    以下输出结果表明已成功删除examplebucket配置规则IDinventorytest的清单内容。

    0.212407(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东1(杭州)名为examplebucket的存储空间配置清单规则,命令如下:

ossutil inventory --method put oss://examplebucket local_xml_file -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项