OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件(Object)和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。本文介绍如何管理存储空间(Bucket)的生命周期规则。
设置生命周期规则
以下代码用于设置生命周期规则。
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: 'yourAccessKeySecret',
// yourbucketname填写存储空间名称。
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: {
days: 3 // 指定当前版本Object距其最后修改时间3天后过期。
}
}
putBucketLifecycle(lifecycle1)
const lifecycle2 = {
id: 'rule2',
status: 'Enabled',
prefix: 'foo/',
expiration: {
createdBeforeDate: '2020-02-18T00:00:00.000Z' // 指定日期之前创建的文件过期。
},
}
putBucketLifecycle(lifecycle2)
const lifecycle3 = {
id: 'rule3',
status: 'Enabled',
prefix: 'foo/',
abortMultipartUpload: {
days: 3 // 指定分片3天后过期。
},
}
putBucketLifecycle(lifecycle3)
const lifecycle4 = {
id: 'rule4',
status: 'Enabled',
prefix: 'foo/',
abortMultipartUpload: {
createdBeforeDate: '2020-02-18T00:00:00.000Z' // 指定日期之前创建的分片过期。
},
}
putBucketLifecycle(lifecycle4)
const lifecycle5 = {
id: 'rule5',
status: 'Enabled',
prefix: 'foo/',
transition: {
// 指定当前版本Object距其最后修改时间20天后转归档存储类型。
days: 20,
storageClass: 'Archive'
},
expiration: {
days: 21 // 指定当前版本Object距其最后修改时间21天后过期。
},
}
putBucketLifecycle(lifecycle5)
const lifecycle6 = {
id: 'rule6',
status: 'Enabled',
prefix: 'foo/',
transition: {
// 指定日期之前自动将文件转为归档类型。
createdBeforeDate: '2020-02-18T00:00:00.000Z', // 指定日期应早于文件过期时间。
storageClass: 'Archive'
},
expiration: {
createdBeforeDate: '2020-02-19T00:00:00.000Z' // 指定日期之前创建的文件过期。
},
}
putBucketLifecycle(lifecycle6)
const lifecycle7 = {
id: 'rule7',
status: 'Enabled',
prefix: 'foo/',
noncurrentVersionExpiration: {
noncurrentDays: 1 // 设置Object成为非当前版本1天后过期。
},
}
putBucketLifecycle(lifecycle7)
const lifecycle8 = {
id: 'rule8',
status: 'Enabled',
prefix: 'foo/',
expiredObjectDeleteMarker: true // 设置自动移除过期删除标记。
}
putBucketLifecycle(lifecycle8)
const lifecycle9 = {
id: 'rule9',
status: 'Enabled',
prefix: 'foo/',
// 设置非当前版本的Object距其最后修改时间10天之后转为低频访问类型。
noncurrentVersionTransition: {
noncurrentDays: '10',
storageClass: 'IA'
}
}
putBucketLifecycle(lifecycle9)
const lifecycle10 = {
id: 'rule10',
status: 'Enabled',
prefix: 'foo/',
// 设置非当前版本的Object距其最后修改时间10天之后转为低频访问类型。
noncurrentVersionTransition: {
noncurrentDays: '10',
storageClass: 'IA'
},
// 指定规则所适用的对象标签。
tag: [{
key: 'key1',
value: 'value1'
},
{
key: 'key2',
value: 'value2'
}]
}
putBucketLifecycle(lifecycle10)
查看生命周期规则
以下代码用于查看生命周期规则。
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: 'yourAccessKeySecret',
// Yourbucketname填写存储空间名称。
bucket: 'Yourbucketname'
});
async function getBucketLifecycle () {
try {
const result = await client.getBucketLifecycle('Yourbucketname');
console.log(result.rules); // 获取生命周期规则。
rules.forEach(rule => {
console.log(rule.id) // 查看生命周期规则ID。
console.log(rule.status) // 查看生命周期规则状态。
console.log(rule.tags) // 查看生命周期规则标签。
console.log(rule.expiration.days) // 查看过期天数规则。
console.log(rule.expiration.createdBeforeDate) // 查看过期日期规则。
// 查看过期分片规则。
console.log(rule.abortMultipartUpload.days || rule.abortMultipartUpload.createdBeforeDate)
// 查看存储类型转换规则。
console.log(rule.transition.days || rule.transition.createdBeforeDate) // 查看存储类型转换时间。
console.log(rule.transition.storageClass) // 转换存储类型。
// 查看是否自动删除过期删除标记。
console.log(rule.transition.expiredObjectDeleteMarker)
// 查看非当前版本Object存储类型转换规则。
console.log(rule.noncurrentVersionTransition.noncurrentDays) // 查看非当前版本Object存储类型转换时间。
console.log(rule.noncurrentVersionTransition.storageClass) // 查看非当前版本Object转换的存储类型。
// 查看非当前版本Object的过期规则。
console.log(rule.noncurrentVersionExpiration.noncurrentDays)
})
} catch (e) {
console.log(e);
}
}
getBucketLifecycle();
清空生命周期规则
以下代码用于清空生命周期规则。
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: 'yourAccessKeySecret',
// Yourbucketname填写存储空间名称。
bucket: 'Yourbucketname'
});
async function deleteBucketLifecycle () {
try {
const result = await client.deleteBucketLifecycle('Yourbucketname');
console.log(result);
} catch (e) {
console.log(e);
}
}
deleteBucketLifecycle();
相关文档
- 关于生命周期规则的完整示例代码,请参见GitHub示例。
- 关于设置生命周期规则的API接口说明,请参见PutBucketLifecycle。
- 关于查看生命周期规则的API接口说明,请参见GetBucketLifecycle。
- 关于清空生命周期规则的API接口说明,请参见DeleteBucketLifecycle。