Tous les produits
Search
Centre de documentation

Object Storage Service:Mode « Requester Pays » (SDK Node.js)

Dernière mise à jour :Aug 20, 2026

Lorsque le mode « Requester Pays » est activé pour un bucket dans Object Storage Service (OSS), les frais de requêtes et de trafic sont facturés au demandeur plutôt qu'au propriétaire du bucket. Ce dernier ne supporte que les coûts de stockage. Activez cette option pour partager les données de votre bucket sans payer les frais de requête et de trafic générés par l'accès des tiers.

Configurer le mode « Requester Pays »

Le code suivant montre comment activer le mode « Requester Pays » pour un bucket :

const OSS = require('ali-oss')

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before running the sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to your bucket name.
  bucket: 'yourBucketName',

});

async function setBucketRequestPayment(bucket, Payer) {
  try {
    // Set bucket to the name of the bucket for which you want to set the pay-by-requester mode.
    // The value of Payer can be Requester or BucketOwner.
    // If Payer is set to Requester, the pay-by-requester mode is enabled for the bucket. The requester pays for the traffic and request fees generated when reading data from the bucket.
    // If Payer is set to BucketOwner, the pay-by-requester mode is disabled for the bucket (default). The fees are paid by the data owner (BucketOwner).
    const result = await client.putBucketRequestPayment(bucket, Payer);
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

setBucketRequestPayment('bucketName', 'Requester')

Récupérer la configuration du mode « Requester Pays »

Le code suivant illustre comment interroger la configuration du mode « Requester Pays » d'un bucket :

const OSS = require('ali-oss')

const client = new OSS({
   // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before running the sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to your bucket name.
  bucket: 'yourBucketName',
});

async function getBucketRequestPayment(bucket) {
  try {
    // Get the pay-by-requester mode configuration of the bucket.
    const result = await client.getBucketRequestPayment(bucket);
    console.log(result.payer);
  } catch (e) {
    console.log(e);
  }
}

getBucketRequestPayment('bucketName')

Accès aux objets avec le mode « Requester Pays »

Si vous décidez que les tiers doivent prendre en charge les coûts d'accès aux objets d'un bucket, les demandeurs doivent inclure l'en-tête x-oss-request-payer:requester dans leurs requêtes HTTP pour effectuer des opérations sur vos objets. À défaut, une erreur sera renvoyée.

Les exemples ci-dessous montrent comment utiliser les méthodes PutObject, GetObject et DeleteObject pour accéder à un objet en tant que demandeur. La logique reste similaire pour les autres opérations de lecture et d'écriture.

Voici comment spécifier que les tiers sont facturés lors de l'accès aux objets :

const OSS = require('ali-oss');
const bucket = 'bucket-name';
const payer = 'Requester';

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before running the sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to your bucket name.
  bucket: 'yourBucketName',

});

async function main() {
  await put();
  await get();
  await del();
}

async function put() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the PutObject operation.
  const response = await client.put('fileName', path.normalize('D:\\localpath\\examplefile.txt'), {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('put:', response);
}

async function get() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the GetObject operation.
  const response = await client.get('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('get:', response);
}

async function del() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the DeleteObject operation.
  const response = await client.delete('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('delete:', response);
}

main();

Références

  • Pour consulter l'exemple de code complet relatif au mode « Requester Pays », rendez-vous sur la page GitHub examples.

  • Pour plus d'informations sur l'opération API permettant de configurer le mode « Requester Pays », consultez la rubrique PutBucketRequestPayment.

  • Pour en savoir plus sur l'opération API dédiée à la récupération de la configuration du mode « Requester Pays », reportez-vous à GetBucketRequestPayment.