You need to enable JavaScript to run this app.
导航

管理桶生命周期(Node.js SDK)

最近更新时间2024.02.04 18:31:09

首次发布时间2023.12.19 18:47:29

您可以通过 SDK 使用对象存储的生命周期管理功能,实现对象的过期删除达到节约存储成本的目的。配置生命周期规则时,可指定规则生效的对象前缀或者对象标签。如果您同时指定了两种生效条件,则对象需满足设置的所有条件,才会应用该生命周期规则。

设置生命周期

注意

  • 设置生命周期规则前,您必须具有 tos:PutLifecycleConfiguration 权限,具体操作,请参见权限配置指南
  • 如果已对桶配置过生命周期规则,则执行此操作将覆盖原有配置。如果您需要追加生命周期规则,请先使用 GetLifecycleConfigutation 获取当前的规则,再追加写入新规则,最后再调用 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();

获取生命周期配置

注意

  • 获取桶设置生命周期规则前,您必须具有 tos:GetLifecycleConfiguration 权限,具体操作,请参见权限配置指南
  • 关于生命周期规则的更多介绍,请参见桶生命周期规则

示例代码

以下代码用于获取存储桶的生命周期规则。

// 导入 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();

相关文档

关于生命周期规则的更多信息,请参见设置生命周期规则