OSS保留策略具有WORM(Write Once Read Many)特性,满足用户以不可删除、不可篡改方式保存和使用数据。如果您希望指定时间内任何用户(包括资源拥有者)均不能修改和删除OSS某个Bucket中的Object,您可以选择为Bucket配置保留策略。在保留策略指定的Object保留时间到期之前,仅支持在Bucket中上传和读取Object。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,
});
// 创建保留策略。
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,
});
// 取消保留策略。
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,
});
// 锁定保留策略。
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,
});
// 获取保留策略。
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,
});
// 延长已锁定的保留策略中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。
文档内容是否对您有帮助?