您可以通过 SDK 使用对象存储的生命周期管理功能,实现对象的过期删除达到节约存储成本的目的。配置生命周期规则时,可指定规则生效的对象前缀或者对象标签。如果您同时指定了两种生效条件,则对象需满足设置的所有条件,才会应用该生命周期规则。
注意
tos:PutLifecycleConfiguration
权限,具体操作,请参见权限配置指南。以下代码用于设置存储桶的生命周期规则。
// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入 import { TosClient, TosClientError, TosServerError, LifecycleStatusType } from '@volcengine/tos-sdk'; // 创建客户端 const client = new TosClient({ accessKeyId: process.env['TOS_ACCESS_KEY'], accessKeySecret: process.env['TOS_SECRET_KEY'], region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。 endpoint: "Provide your endpoint", // 填写域名地址 }); function handleError(error) { if (error instanceof TosClientError) { console.log('Client Err Msg:', error.message); console.log('Client Err Stack:', error.stack); } else if (error instanceof TosServerError) { console.log('Request ID:', error.requestId); console.log('Response Status Code:', error.statusCode); console.log('Response Header:', error.headers); console.log('Response Err Code:', error.code); console.log('Response Err Msg:', error.message); } else { console.log('unexpected exception, message: ', error); } } const bucketName = 'node-sdk-test-bucket'; async function main() { try { const lifeCycleRule = { // 规则 ID ID: 'rule1', // 指定规则适用的前缀,匹配前缀 Prefix: 'prefix-', // 规则状态,标示规则是否启用 Status: LifecycleStatusType.Enabled, // 对象的过期时间 // Days: 指定在对象过期多少天后进行操作 // Date: 指定对象在哪一天过期 Expiration: { Days: 30, }, // 对象标签 Tags: [ { Key: 'key', Value: 'value', }, ], }; const { requestId: putLifecycleRequestId } = await client.putBucketLifecycle({ bucket: bucketName, rules: [lifeCycleRule], }); console.log('putBucketLifecycle Request ID: ', putLifecycleRequestId); } catch (error) { handleError(error); } } main();
以下代码用于获取存储桶的生命周期规则。
// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入 import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk'; // 创建客户端 const client = new TosClient({ accessKeyId: process.env['TOS_ACCESS_KEY'], accessKeySecret: process.env['TOS_SECRET_KEY'], region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。 endpoint: "Provide your endpoint", // 填写域名地址 }); function handleError(error) { if (error instanceof TosClientError) { console.log('Client Err Msg:', error.message); console.log('Client Err Stack:', error.stack); } else if (error instanceof TosServerError) { console.log('Request ID:', error.requestId); console.log('Response Status Code:', error.statusCode); console.log('Response Header:', error.headers); console.log('Response Err Code:', error.code); console.log('Response Err Msg:', error.message); } else { console.log('unexpected exception, message: ', error); } } const bucketName = 'node-sdk-test-bucket'; async function main() { try { const { data, requestId: getLifecycleRequestId } = await client.getBucketLifecycle({ bucket: bucketName, }); console.log('getBucketLifecycle Request ID: ', getLifecycleRequestId); console.log('getBucketLifecycle Rules Length: ', data.Rules.length); for (const rule of data.Rules) { // 规则 ID console.log('Rule ID:', rule.ID); // 指定规则适用的前缀,匹配前缀 console.log('Rule Prefix:', rule.Prefix); // 规则状态,标示规则是否启用 console.log('Rule Status:', rule.Status); // 存储类型转换属性,描述对象的存储类型何时进行转换 console.log('Rule Transitions:', rule.Transitions); // 对象的过期时间 console.log('Rule Expiration:', rule.Expiration); // 非当前版本存储类型何时进行转换 console.log('Rule NonCurrentVersionTransition:', rule.NonCurrentVersionTransition); // 非当前版本对象何时过期 console.log('Rule NoCurrentVersionExpiration:', rule.NoCurrentVersionExpiration); // 标签 for (const tag of rule.Tags) { console.log('Rule Tag Key:', tag.Key); console.log('Rule Tag Value:', tag.Value); } // 非完成上传的分片上传最长保留时间 console.log('Rule AbortInCompleteMultipartUpload:', rule.AbortInCompleteMultipartUpload); } } catch (error) { handleError(error); } } main();
注意
删除桶生命周期规则前,您必须具有 tos:PutLifecycleConfiguration
权限,具体操作,请参见权限配置指南。
以下代码用于删除存储桶的生命周期规则:
// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入 import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk'; // 创建客户端 const client = new TosClient({ accessKeyId: process.env['TOS_ACCESS_KEY'], accessKeySecret: process.env['TOS_SECRET_KEY'], region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。 endpoint: "Provide your endpoint", // 填写域名地址 }); function handleError(error) { if (error instanceof TosClientError) { console.log('Client Err Msg:', error.message); console.log('Client Err Stack:', error.stack); } else if (error instanceof TosServerError) { console.log('Request ID:', error.requestId); console.log('Response Status Code:', error.statusCode); console.log('Response Header:', error.headers); console.log('Response Err Code:', error.code); console.log('Response Err Msg:', error.message); } else { console.log('unexpected exception, message: ', error); } } const bucketName = 'node-sdk-test-bucket'; async function main() { try { const { requestId: deleteLifecycleRequestId } = await client.deleteBucketLifecycle({ bucket: bucketName, }); console.log('deleteBucketLifecycle Request ID: ', deleteLifecycleRequestId); } catch (error) { handleError(error); } } main();
关于生命周期规则的更多信息,请参见设置生命周期规则。