全部产品

存储空间清单

本文档介绍如何添加、查看、列举和删除存储空间(Bucket)的清单(Inventory)配置。

注意

请确保您拥有调用以上操作的权限。Bucket所有者默认拥有此类权限,若您无此类权限,请先向Bucket所有者申请对应操作的权限。

添加清单配置

添加清单配置时,有如下注意事项:

  • 单个Bucket最多只能配置1000条清单规则。

  • 配置清单的源Bucket与存放导出的清单文件所在的目标Bucket必须位于同一个Region。

以下代码用于为某个Bucket添加清单配置:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // Region以杭州为例,其他Region按实际情况填写。
  region: '<oss-cn-hangzhou>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

const inventory = {
  // 设置清单配置ID。
  id: 'default', 
  // 清单配置是否启用的标识,取值为true或false。
  isEnabled: false, 
  //(可选)设置清单筛选规则,指定筛选object的前缀。
  prefix: 'ttt',
  OSSBucketDestination: {
     // 设置清单格式。
    format: 'CSV',
   // 目标Bucket拥有者的账号ID。
    accountId: '<Your AccountId>', 
   // 目标Bucket的角色名称。
    rolename: 'AliyunOSSRole',
    // 目标Bucket的名称。
    bucket: '<Your BucketName>',
    //(可选)清单结果的存储路径前缀。
    prefix: '<Your Prefix>',
    // 如果需要使用SSE-OSS加密清单,请参考以下代码。
    //encryption: {'SSE-OSS': ''},
    // 如果需要使用SSE-KMS加密清单,请参考以下代码。
   	/*
    	encryption: {
      'SSE-KMS': {
        keyId: 'test-kms-id';
      };, 
    */
  },
  // 设置清单的生成计划,WEEKLY对应每周一次,DAILY对应每天一次。
  frequency: 'Daily', 
  // 设置清单结果中包含了Object的所有版本, 如果设置为Current,则表示仅包含Object的当前版本。
  includedObjectVersions: 'All', 
  optionalFields: {
    //(可选)设置清单中包含的Object属性。
    field: ["Size", "LastModifiedDate", "ETag", "StorageClass", "IsMultipartUploaded", "EncryptionStatus"]
  },
}

async function putInventory(){
  // 需要添加清单配置的Bucket名称。
  const bucket = '<Your BucketName>'; 
	try {
    await client.putBucketInventory(bucket, inventory);
    console.log('清单配置添加成功')
  } catch(err) {
    console.log('清单配置添加失败: ', err);
  }
}

putInventory()

有关添加Bucket清单配置的详情,请参见PutBucketInventory

查看清单配置

以下代码用于查看某个Bucket的清单配置:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // Region以杭州为例,其他Region按实际情况填写。
  region: '<oss-cn-hangzhou>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function getBucketInventoryById() {
  // 指定获取清单配置的Bucket名称。
  const bucket = '<Your BucketName>';
  try {
    // 查看清单配置。
    const result = await client.getBucketInventory(bucket, 'inventoryid');
   	console.log(result.inventory);
  } catch (err) {
   	console.log(err)
  }
}

getBucketInventoryById();

有关查看Bucket清单配置的详情,请参见GetBucketInventory

批量列举清单配置

说明

单次请求最多可获取100条清单配置项内容。若需获取超过100条清单配置项,则需发送多次请求,并保留相应的Token,作为下一次请求的参数。

以下代码用于批量列举某个Bucket的清单配置:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // Region以杭州为例,其他Region按实际情况填写。
  region: '<oss-cn-hangzhou>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function listBucketInventory() {
  const bucket = '<Your Bucket Name>';
  // 列举清单配置。
  const result = await client.listBucketInventory(bucket);
  console.log(result.inventoryList);
  // 默认每次最多列举100条结果,如果配置超过100条,结果将会分页返回,通过传入nextContinuationToken方式列举下一页。
  const { nextContinuationToken } = result;
  const resultNext = await client.listBucketInventory(bucket, nextContinuationToken);
  console.log(result.inventoryList);
}

listBucketInventory();

有关批量列举Bucket清单配置的详情,请参见ListBucketInventory

删除清单配置

以下代码用于删除某个Bucket的清单配置:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  // Region以杭州为例,其他Region按实际情况填写。
  region: '<oss-cn-hangzhou>',
  // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function deleteBucketInventoryById() {
  const bucket = '<Your Bucket Name>';
  // 删除指定ID的清单配置。
  const inventory_id = '<Your InventoryId>'; 
	try {
    await client.deleteBucketInventory(bucket, inventory_id);
  } catch (err) {
    console.log(err)
  }
}
deleteBucketInventoryById();

有关删除Bucket清单配置的详情,请参见DeleteBucketInventory