Tous les produits
Search
Centre de documentation

Object Storage Service:Inventaire de bucket (SDK Node.js)

Dernière mise à jour :Aug 18, 2026

Utilisez le SDK OSS Node.js pour ajouter, afficher, répertorier et supprimer des configurations d'inventaire pour un bucket.

Important

Si vous utilisez la fonctionnalité d'inventaire en tant qu'utilisateur RAM (Resource Access Management), assurez-vous de disposer des autorisations requises. Pour plus d'informations, consultez Classification des actions OSS.

Ajouter une configuration d'inventaire

Avant d'ajouter une configuration d'inventaire, tenez compte des limites suivantes :

  • Un bucket peut contenir au maximum 1 000 règles d'inventaire.

  • Le bucket source et le bucket de destination doivent se trouver dans la même région. Le bucket source est le bucket dont les objets sont inventoriés. Le bucket de destination est celui dans lequel OSS écrit les fichiers manifestes d'inventaire.

Le code suivant ajoute une configuration d'inventaire à un bucket. Tous les exemples utilisent CommonJS (require). Si votre projet utilise des modules ES, remplacez la ligne require par import OSS from 'ali-oss'.

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

const client = new OSS({
  // Specify the source bucket name.
  bucket: 'yourBucketName',
  // Specify the region where the source bucket is located, for example, oss-cn-hangzhou.
  region: 'yourRegion',
  // Obtain access credentials from environment variables.
  // Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

const inventory = {
  id: 'default',                  // required — unique ID for the inventory configuration
  isEnabled: false,               // required — true to enable, false to disable
  prefix: 'logs/',                // optional — filter objects by key prefix
  OSSBucketDestination: {
    format: 'CSV',                // required — inventory output format; only CSV is supported
    accountId: 'yourAccountId',   // required — Alibaba Cloud account ID of the destination bucket owner
    rolename: 'AliyunOSSRole',    // required — RAM role name granted write access to the destination bucket
    bucket: 'yourDestBucketName', // required — destination bucket name
    prefix: 'inventory-reports/', // optional — key prefix for inventory files in the destination bucket
    // To encrypt inventory files with SSE-OSS:
    // encryption: { 'SSE-OSS': '' }
    // To encrypt with SSE-KMS:
    // encryption: { 'SSE-KMS': { keyId: 'your-kms-key-id' } }
  },
  frequency: 'Daily',             // required — 'Daily' or 'Weekly'
  includedObjectVersions: 'All',  // required — 'All' (all versions) or 'Current' (latest version only)
  optionalFields: {
    field: [                      // optional — additional object attributes to include in the report
      'Size',
      'LastModifiedDate',
      'ETag',
      'StorageClass',
      'IsMultipartUploaded',
      'EncryptionStatus',
    ],
  },
};

async function putInventory() {
  const bucket = 'yourBucketName';
  try {
    await client.putBucketInventory(bucket, inventory);
    console.log('Inventory configuration added.');
  } catch (err) {
    console.error('Failed to add inventory configuration:', err);
  }
}

putInventory();

Le tableau suivant décrit les principaux paramètres :

Paramètre

Obligatoire

Description

id

Oui

Identifiant unique de la configuration d'inventaire.

isEnabled

Oui

Indique si la configuration est activée. Définissez sur true pour activer ou sur false pour désactiver.

prefix

Non

Filtre l'inventaire pour inclure uniquement les objets dont les clés commencent par ce préfixe.

OSSBucketDestination.format

Oui

Format de sortie du fichier d'inventaire. Seul le format CSV est pris en charge.

OSSBucketDestination.accountId

Oui

ID du compte Alibaba Cloud du propriétaire du bucket de destination.

OSSBucketDestination.rolename

Oui

Nom du rôle RAM disposant d'un accès en écriture au bucket de destination.

OSSBucketDestination.bucket

Oui

Nom du bucket de destination.

OSSBucketDestination.prefix

Non

Préfixe de clé pour les fichiers d'inventaire stockés dans le bucket de destination.

frequency

Oui

Fréquence de génération. Valeurs valides : Daily, Weekly.

includedObjectVersions

Oui

Versions d'objets à inclure. All inclut toutes les versions. Current inclut uniquement la dernière version.

optionalFields.field

Non

Attributs supplémentaires à inclure dans le rapport. Valeurs valides : Size, LastModifiedDate, ETag, StorageClass, IsMultipartUploaded, EncryptionStatus.

Afficher une configuration d'inventaire

Le code suivant récupère une configuration d'inventaire par son ID.

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

const client = new OSS({
  bucket: 'yourBucketName',
  region: 'yourRegion',
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

async function getBucketInventoryById() {
  const bucket = 'yourBucketName';
  try {
    const result = await client.getBucketInventory(bucket, 'yourInventoryId');
    console.log(result.inventory);
  } catch (err) {
    console.error(err);
  }
}

getBucketInventoryById();

Répertorier les configurations d'inventaire

Remarque

Une seule requête renvoie au maximum 100 configurations d'inventaire. Pour en récupérer davantage, envoyez plusieurs requêtes paginées en utilisant le jeton nextContinuationToken présent dans chaque réponse.

Le code suivant répertorie toutes les configurations d'inventaire d'un bucket, en parcourant les pages jusqu'à ce que tous les résultats soient récupérés.

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

const client = new OSS({
  bucket: 'yourBucketName',
  region: 'yourRegion',
  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(continuationToken) {
    const result = await client.listBucketInventory(bucket, continuationToken);
    // result shape:
    // {
    //   inventoryList: [ { id, isEnabled, ... }, ... ],
    //   nextContinuationToken: 'STRING_VALUE' | undefined  // undefined means no more pages
    // }
    console.log(result.inventoryList);

    if (result.nextContinuationToken) {
      await getNextPage(result.nextContinuationToken);
    }
  }

  await getNextPage();
}

listBucketInventory();

Supprimer une configuration d'inventaire

Le code suivant supprime une configuration d'inventaire par son ID.

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

const client = new OSS({
  bucket: 'yourBucketName',
  region: 'yourRegion',
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
});

async function deleteBucketInventoryById() {
  const bucket = 'yourBucketName';
  const inventoryId = 'yourInventoryId';
  try {
    await client.deleteBucketInventory(bucket, inventoryId);
    console.log('Inventory configuration deleted.');
  } catch (err) {
    console.error('Failed to delete inventory configuration:', err);
  }
}

deleteBucketInventoryById();

Références

  • Pour obtenir le code d'exemple complet, consultez les exemples GitHub.

  • Pour l'opération API permettant d'ajouter une configuration d'inventaire de bucket, consultez PutBucketInventory.

  • Pour l'opération API permettant d'afficher une configuration d'inventaire de bucket, consultez GetBucketInventory.

  • Pour l'opération API permettant de répertorier les configurations d'inventaire de bucket, consultez ListBucketInventory.

  • Pour l'opération API permettant de supprimer une configuration d'inventaire de bucket, consultez DeleteBucketInventory.