您可以使用清单功能获取存储空间(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清单功能的更多信息,参见存储空间清单。
添加清单规则
添加清单规则步骤如下:
生成RAM角色,该角色需拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。配置角色的步骤请参见创建可信实体为阿里云服务的RAM角色。
创建本地文件,并在文件中配置XML格式的清单规则。
ossutil先从本地文件中读取清单配置,然后将读取到清单配置添加到指定的Bucket。
命令格式
ossutil inventory --method put oss://bucketname local_xml_file
参数说明如下:
参数
说明
bucketname
添加清单规则的存储空间名称。
local_xml_file
配置清单规则的本地文件名称,例如
localfile.xml
。使用示例
创建本地文件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错误。
为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中配置规则ID为inventorytest的清单内容,并将清单结果写入本地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配置规则ID为inventorytest的清单内容。
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****
关于此命令的其他通用选项的更多信息,请参见通用选项。