全部产品
Search
文档中心

Object Storage Service:Lifecycle (Node.js SDK)

更新时间:Nov 30, 2025

Tidak semua data yang diunggah ke OSS memerlukan akses yang sering. Untuk kepatuhan data atau pengarsipan, sebagian data harus disimpan dalam kelas penyimpanan cold storage. Dalam skenario lain, Anda mungkin ingin menghapus data yang tidak lagi diperlukan dari bucket secara batch. Anda dapat mengonfigurasi aturan lifecycle berdasarkan Last Modified Time untuk mengurangi biaya penyimpanan—aturan ini secara berkala memindahkan objek dari kelas penyimpanan hot ke cold atau menghapusnya.

Catatan

  • Sebelum mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir objek, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Aturan lifecycle berdasarkan waktu modifikasi terakhir.

  • Untuk menetapkan aturan lifecycle, Anda harus memiliki izin oss:PutBucketLifecycle. Untuk melihat aturan lifecycle, Anda harus memiliki izin oss:GetBucketLifecycle. Untuk menghapus semua aturan lifecycle, Anda harus memiliki izin oss:DeleteBucketLifecycle. Untuk informasi selengkapnya, lihat Berikan kebijakan akses kustom kepada Pengguna RAM.

Tetapkan aturan lifecycle

Kode berikut menunjukkan cara menetapkan aturan lifecycle berdasarkan Last Modified Time. Jika ingin mengubah satu atau beberapa aturan setelah konfigurasi, lihat Bagaimana cara mengubah konfigurasi satu atau beberapa aturan lifecycle?.

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,
  // Tentukan nama bucket.
  bucket: 'yourbucketname'
});

async function putBucketLifecycle(lifecycle) {
  try {
    const result = await client.putBucketLifecycle('yourbucketname', [
    lifecycle
  ]);
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

const lifecycle1 = {
  id: 'rule1',
  status: 'Enabled',
  prefix: 'foo/',
  expiration: {
    // Kedaluwarsa versi saat ini dari objek 3 hari setelah waktu modifikasi terakhirnya.
    days: 3 
  }
}
putBucketLifecycle(lifecycle1)

const lifecycle2 = {
  id: 'rule2',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // Kedaluwarsa objek yang dibuat sebelum tanggal yang ditentukan.
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle2)

const lifecycle3 = {
  id: 'rule3',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // Kedaluwarsa bagian unggah multi-bagian setelah 3 hari.
    days: 3 
  },
}
putBucketLifecycle(lifecycle3)

const lifecycle4 = {
  id: 'rule4',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // Kedaluwarsa bagian unggah multi-bagian yang dibuat sebelum tanggal yang ditentukan.
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle4)

const lifecycle5 = {
  id: 'rule5',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    // Pindahkan versi saat ini dari objek ke kelas penyimpanan Archive Storage 20 hari setelah waktu modifikasi terakhirnya.
    days: 20,
    storageClass: 'Archive'
  },
  expiration: {
    // Kedaluwarsa versi saat ini dari objek 21 hari setelah waktu modifikasi terakhirnya.
    days: 21 
  },
}
putBucketLifecycle(lifecycle5)

const lifecycle6 = {
  id: 'rule6',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    // Pindahkan objek yang dibuat sebelum tanggal yang ditentukan ke kelas penyimpanan Archive Storage.
    createdBeforeDate: '2023-02-19T00:00:00.000Z', 
    storageClass: 'Archive'
  },
  expiration: {
    // Hapus objek yang dibuat sebelum tanggal yang ditentukan.
    createdBeforeDate: '2023-01-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle6)

const lifecycle7 = {
  id: 'rule7',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // Secara otomatis hapus penanda hapus yang telah kedaluwarsa.
    expiredObjectDeleteMarker: true 
  }
}
putBucketLifecycle(lifecycle7)

const lifecycle8 = {
  id: 'rule8',
  status: 'Enabled',
  prefix: 'foo/', 
  // Pindahkan versi non-current objek ke kelas penyimpanan Infrequent Access (IA) 10 hari setelah menjadi non-current.
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  }
}
putBucketLifecycle(lifecycle8)

const lifecycle9 = {
  id: 'rule9',
  status: 'Enabled',
  prefix: 'foo/', 
  // Pindahkan versi non-current objek ke kelas penyimpanan Infrequent Access (IA) 10 hari setelah menjadi non-current.
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  },
  // Tentukan tag objek yang diterapkan oleh aturan ini.
  tag: [{
    key: 'key1',
    value: 'value1'
  },
   {
     key: 'key2',
     value: 'value2'
   }]
}
putBucketLifecycle(lifecycle9)

Lihat aturan lifecycle

Kode berikut menunjukkan cara melihat aturan lifecycle.

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,
  // Tentukan nama bucket.
  bucket: 'yourbucketname'
});

async function getBucketLifecycle () {
  try {
    const result = await client.getBucketLifecycle('Yourbucketname');
    console.log(result.rules); // Dapatkan aturan lifecycle.

    result.rules.forEach(rule => {
      console.log(rule.id) //  Lihat ID aturan lifecycle. 
      console.log(rule.status) // Lihat status aturan lifecycle.
      console.log(rule.tags) // Lihat tag aturan lifecycle.
      console.log(rule.expiration.days) // Lihat aturan kedaluwarsa berdasarkan jumlah hari.
      console.log(rule.expiration.createdBeforeDate) // Lihat aturan kedaluwarsa berdasarkan tanggal.
      // Lihat aturan untuk kedaluwarsa bagian unggah multi-bagian.
      console.log(rule.abortMultipartUpload.days || rule.abortMultipartUpload.createdBeforeDate)
      // Lihat aturan transisi kelas penyimpanan.
      console.log(rule.transition.days || rule.transition.createdBeforeDate) // Lihat waktu transisi kelas penyimpanan.
      console.log(rule.transition.storageClass) // Kelas penyimpanan tujuan objek dipindahkan.
      // Lihat apakah penanda hapus yang kedaluwarsa dihapus secara otomatis.
      console.log(rule.transition.expiredObjectDeleteMarker)
      // Lihat aturan transisi kelas penyimpanan untuk versi objek non-current.
      console.log(rule.noncurrentVersionTransition.noncurrentDays) // Lihat waktu transisi kelas penyimpanan untuk versi objek non-current.
      console.log(rule.noncurrentVersionTransition.storageClass) // Lihat kelas penyimpanan tujuan versi objek non-current dipindahkan.
    })
  } catch (e) {
    console.log(e);
  }
}
getBucketLifecycle();

Hapus aturan lifecycle

Kode berikut menunjukkan cara menghapus semua aturan lifecycle dari bucket. Untuk menghapus hanya satu atau beberapa aturan lifecycle tertentu, lihat Bagaimana cara menghapus satu atau beberapa aturan lifecycle?.

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,
  // Tentukan nama bucket.
  bucket: 'yourbucketname'
});

async function deleteBucketLifecycle () {
  try {
    const result = await client.deleteBucketLifecycle('Yourbucketname');
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}
deleteBucketLifecycle();

Referensi

  • Untuk kode contoh lengkap mengenai aturan lifecycle, lihat Contoh GitHub.

  • Untuk informasi selengkapnya tentang operasi API yang digunakan untuk menetapkan aturan lifecycle, lihat PutBucketLifecycle.

  • Untuk informasi selengkapnya tentang operasi API yang digunakan untuk melihat aturan lifecycle, lihat GetBucketLifecycle.

  • Untuk informasi selengkapnya tentang operasi API yang digunakan untuk menghapus semua aturan lifecycle, lihat DeleteBucketLifecycle.