对象存储OSS允许针对存储空间(Bucket)设置基于时间的合规保留策略,保护周期为1天到70年。本文介绍如何新建、获取、锁定合规保留策略等。
背景信息
OSS支持WORM(Write Once Read Many)特性,允许您以不可删除、不可篡改的方式保存和使用数据。
当基于时间的合规保留策略创建24小时后未提交锁定,则该策略自动失效。当合规保留策略锁定后,您可以在Bucket中上传和读取文件(Object),但是在Object的保留时间到期之前,不允许删除Object及合规保留策略,且无法缩短策略保护周期,仅允许延长Object的保留时间。关于合规保留策略的详情,请参见保留策略。
新建合规保留策略
以下代码用于新建合规保留策略。
const OSS = require('ali-oss');
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeyId'
});
// 创建合规保留策略。
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',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeyId'
});
// 取消合规保留策略。
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',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeyId'
});
// 锁定合规保留策略。
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',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeyId'
});
// 获取合规保留策略。
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',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeyId'
});
// 延长已锁定的合规保留策略中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。