全部產品
Search
文件中心

Object Storage Service:保留原則(Node.js SDK)

更新時間:Nov 29, 2025

OSS保留原則具有WORM(Write Once Read Many)特性,滿足使用者以不可刪除、不可篡改方式儲存和使用資料。如果您希望指定時間內任何使用者(包括資源擁有者)均不能修改和刪除OSS某個Bucket中的Object,您可以選擇為Bucket配置保留原則。在保留原則指定的Object保留時間到期之前,僅支援在Bucket中上傳和讀取Object。Object保留時間到期後,才可以修改或刪除Object。

說明

在配置保留原則之前,請確保您已瞭解該功能。詳情請參見保留原則(WORM)

建立保留原則

以下代碼用於建立保留原則。

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

const client = new OSS({
  // 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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});
// 建立保留原則。
async function initiateBucketWorm() {
 // yourbucketname填寫儲存空間名稱。
  const bucket = 'yourbucketname'
  // 指定Object保護天數。
  const days = '<Retention Days>'
    const res = await client.initiateBucketWorm(bucket, days)
  console.log(res.wormId)
}

initiateBucketWorm()

取消未鎖定的保留原則

以下代碼用於取消未鎖定的保留原則:

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

const client = new OSS({
  // 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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});
// 取消保留原則。
async function abortBucketWorm() {
  // yourbucketname填寫儲存空間名稱。
  const bucket = 'yourbucketname'
    try {
    await client.abortBucketWorm(bucket)
    console.log('abort success')
  } catch(err) {
        console.log('err: ', err)
    }
}

abortBucketWorm()

鎖定保留原則

以下代碼用於鎖定保留原則。

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

const client = new OSS({
  // 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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});
// 鎖定保留原則。
async function completeBucketWorm() {
  // yourbucketname填寫儲存空間名稱。
  const bucket = 'yourbucketname'
  const wormId = 'Your Worm Id'
    try {
        await client.completeBucketWorm(bucket, wormId)
  } catch(err) {
      console.log(err)
  }
}

completeBucketWorm()

擷取保留原則

以下代碼用於擷取保留原則。

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

const client = new OSS({
  // 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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});
// 擷取保留原則。
async function getBucketWorm() {
  // yourbucketname填寫儲存空間名稱。
  const bucket = 'yourbucketname'
    try {
        const res = await client.getBucketWorm(bucket)
    // 查看保留原則ID。
    console.log(res.wormId)
    // 查看保留原則狀態。未鎖定狀態為"InProgress",鎖定狀態為"Locked"。
    console.log(res.state)
    // 查看Object的保護時間。
    console.log(res.days)
  } catch(err) {
      console.log(err)
  }
}

getBucketWorm()

延長Object的保留天數

以下代碼用於延長鎖定的保留原則中Object的保留天數.

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

const client = new OSS({
  // 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,
  // yourBucketName填寫Bucket名稱。
  bucket: 'yourBucketName',
});
// 延長鎖定的保留原則中Object的保留天數。
async function extendBucketWorm() {
  // yourbucketname填寫儲存空間名稱。
  const bucket = 'yourbucketname'
  const wormId = 'Your Worm Id'
  const days = 'Retention Days'
    try {
        const res = await client.extendBucketWorm(bucket, wormId, days)
    console.log(res)
  } catch(err) {
      console.log(err)
  }
}

extendBucketWorm()

相關文檔