全部產品
Search
文件中心

Object Storage Service:儲存空間清單(Node.js SDK)

更新時間:Nov 29, 2025

本文介紹如何使用Node.js添加、查看、列舉、刪除儲存空間(Bucket)的清單(Inventory)配置。

重要

如果您通過RAM使用者使用清單功能,請確保已擁有清單功能的相關許可權。關於清單功能的許可權說明,請參見OSS Action分類

添加清單配置

添加清單配置時,有如下注意事項:

  • 單個Bucket最多隻能配置1000條清單規則。

  • 配置清單的源Bucket與存放匯出的資訊清單檔所在的目標Bucket必須位於同一個Region。

以下代碼用於為某個Bucket添加清單配置。

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

const client = new OSS({
  // yourBucketName填寫儲存空間名稱。
  bucket: 'yourBucketName',
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

const inventory = {
  // 設定清單配置ID。
  id: 'default',
  // 清單配置是否啟用的標識,取值為true或者false。
  isEnabled: false,
  // (可選)設定清單篩選規則,指定篩選object的首碼。
  prefix: 'ttt',
  OSSBucketDestination: {
    // 設定清單格式。
    format: 'CSV',
    // yourAccountId填寫目標Bucket擁有者的帳號ID。
    accountId: 'yourAccountId',
    // AliyunOSSRole填寫目標Bucket的角色名稱。
    rolename: 'AliyunOSSRole',
    // yourBucketName填寫目標Bucket的名稱。
    bucket: 'yourBucketName',
    // (可選)yourPrefix填寫清單結果的儲存路徑首碼。
    prefix: 'yourPrefix ',
    // 如果需要使用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() {
  // yourBucketName填寫需要添加清單配置的Bucket名稱。
  const bucket = 'yourBucketName';
  try {
    await client.putBucketInventory(bucket, inventory);
    console.log('清單配置添加成功');
  } catch (err) {
    console.log('清單配置添加失敗:', err);
  }
}

putInventory();

查看清單配置

以下代碼用於查看某個Bucket的清單配置。

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

const client = new OSS({
  // yourBucketName填寫儲存空間名稱。
  bucket: 'yourBucketName',
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

async function getBucketInventoryById() {
  // yourBucketName填寫指定擷取清單配置的Bucket名稱。
  const bucket = 'yourBucketName';
  try {
    // 查看清單配置。
    const result = await client.getBucketInventory(bucket, 'inventoryid');
    console.log(result.inventory);
  } catch (err) {
    console.log(err);
  }
}

getBucketInventoryById();

批量列舉清單配置

說明

單次請求最多可擷取100條清單配置項內容。若需擷取超過100條清單配置項,則需發送多次請求,並保留相應的Token,作為下一次請求的參數。

以下代碼用於批量列舉某個Bucket的清單配置。

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

const client = new OSS({
  // yourBucketName填寫儲存空間名稱。
  bucket: 'yourBucketName',
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

async function listBucketInventory() {
  const bucket = 'yourBucketName'; // 填寫指定儲存空間名稱。

  async function getNextPage(nextContinuationToken) {
    // 使用nextContinuationToken來擷取下一頁,如果不提供token,則擷取第一頁。
    const result = await client.listBucketInventory(bucket, nextContinuationToken);

    // 輸出結果。
    console.log(result.inventoryList);

    // 如果還有下一頁,遞迴調用函數。
    if (result.nextContinuationToken) {
      await getNextPage(result.nextContinuationToken);
    }
  }

  // 開始擷取第一頁。
  await getNextPage();
}

listBucketInventory();

刪除清單配置

以下代碼用於刪除某個Bucket的清單配置。

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

const client = new OSS({
  // yourBucketName填寫儲存空間名稱。
  bucket: 'yourBucketName',
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

async function deleteBucketInventoryById() {
  // yourBucketName填寫指定儲存空間名稱。
  const bucket = 'yourBucketName';
  // 刪除指定ID的清單配置。
  const inventory_id = 'Your InventoryId';
  try {
    await client.deleteBucketInventory(bucket, inventory_id);
  } catch (err) {
    console.log(err);
  }
}

deleteBucketInventoryById();

相關文檔