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()相關文檔
關於保留原則的完整範例程式碼,請參見GitHub樣本。
關於建立保留原則的API介面說明,請參見InitiateBucketWorm。
關於取消未鎖定的保留原則的API介面說明,請參見AbortBucketWorm。
關於鎖定保留原則的API介面說明,請參見CompleteBucketWorm。
關於擷取保留原則的API介面說明,請參見GetBucketWorm。
關於延長Object的保留天數的API介面說明,請參見ExtendBucketWorm。