全部产品
Search
文档中心

Object Storage Service:Mode bayar-per-permintaan (Node.js SDK)

更新时间:Nov 30, 2025

Dalam mode bayar-per-permintaan, pihak yang melakukan permintaan menanggung biaya trafik dan permintaan yang dihasilkan dari akses data di dalam bucket, sedangkan pemilik bucket hanya membayar biaya penyimpanan. Fitur ini memungkinkan Anda berbagi data tanpa dikenai biaya atas trafik dan permintaan yang dihasilkan.

Mengatur mode bayar-per-permintaan

Kode berikut menunjukkan cara mengaktifkan mode bayar-per-permintaan.

const OSS = require('ali-oss')

const client = new OSS({
  // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel bucket ke nama bucket Anda.
  bucket: 'yourBucketName',

});

async function setBucketRequestPayment(bucket, Payer) {
  try {
    // Setel bucket ke nama bucket yang ingin Anda atur mode bayar-per-permintaannya.
    // Nilai Payer dapat berupa Requester atau BucketOwner.
    // Jika Payer diatur ke Requester, mode bayar-per-permintaan diaktifkan untuk bucket tersebut. Peminta membayar biaya trafik dan permintaan yang dihasilkan saat membaca data dari bucket.
    // Jika Payer diatur ke BucketOwner, mode bayar-per-permintaan dinonaktifkan untuk bucket tersebut (default). Biaya dibayar oleh pemilik data (BucketOwner).
    const result = await client.putBucketRequestPayment(bucket, Payer);
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

setBucketRequestPayment('bucketName', 'Requester')

Mendapatkan konfigurasi mode bayar-per-permintaan

Kode berikut menunjukkan cara mengambil informasi konfigurasi mode bayar-per-permintaan.

const OSS = require('ali-oss')

const client = new OSS({
   // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel bucket ke nama bucket Anda.
  bucket: 'yourBucketName',
});

async function getBucketRequestPayment(bucket) {
  try {
    // Dapatkan konfigurasi mode bayar-per-permintaan bucket.
    const result = await client.getBucketRequestPayment(bucket);
    console.log(result.payer);
  } catch (e) {
    console.log(e);
  }
}

getBucketRequestPayment('bucketName')

Akses Objek dengan Bayar oleh Peminta

Saat pihak ketiga melakukan operasi pada objek, permintaan tersebut harus menyertakan parameter x-oss-request-payer:requester dalam header HTTP. Jika tidak, permintaan akan mengembalikan error.

Kode berikut memberikan contoh penggunaan PutObject, GetObject, dan DeleteObject untuk mengakses objek sebagai peminta. Pendekatan ini berlaku serupa untuk operasi baca-tulis objek lainnya.

Kode berikut menunjukkan cara menentukan pembayar pihak ketiga untuk akses objek.

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

const client = new OSS({
  // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel bucket ke nama bucket Anda.
  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);
  // Tentukan pembayar untuk operasi PutObject.
  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);
  // Tentukan pembayar untuk operasi GetObject.
  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);
  // Tentukan pembayar untuk operasi DeleteObject.
  const response = await client.delete('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('delete:', response);
}

main();

Referensi

  • Untuk kode contoh lengkap mengenai mode bayar-per-permintaan, lihat contoh di GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengatur mode bayar-per-permintaan, lihat PutBucketRequestPayment.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengambil konfigurasi mode bayar-per-permintaan, lihat GetBucketRequestPayment.