You need to enable JavaScript to run this app.
导航
获取桶信息(Node.js SDK)
最近更新时间:2024.02.04 18:30:56首次发布时间:2022.05.13 18:28:15

通过 HeadBucket 获取存储桶(Bucket)的信息, 同时可以根据返回的 err 中的 HTTP Code 信息,判断桶是否存在。本文介绍如何获取桶元数据和判断桶是否存在。

注意事项

  • 获取桶元数据之前,您必须具有 tos:HeadBucket 权限。具体操作,请参见权限配置指南
  • 若桶不存在则该接口会返回 404,也常用于判断桶是否存在。

示例代码

判断桶是否存在

// 导入 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-not-exist';
async function main() {
  try {
    // 判断桶是否存在
    const { data } = await client.headBucket(bucketName);

    console.log(`the region of ${bucketName} is`, data['x-tos-bucket-region']);
    console.log(`the storageClass of ${bucketName} is`, data['x-tos-storage-class']);
  } catch (error) {
    if (error instanceof TosServerError) {
      if (error.statusCode === 404) {
        // 存储桶不存在
        console.log('Bucket not found.');
        return;
      }
    }

    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 } = await client.headBucket(bucketName);

   console.log(`the region of ${bucketName} is`, data['x-tos-bucket-region']);
   console.log(`the storageClass of ${bucketName} is`, data['x-tos-storage-class']);
 } catch (error) {
   handleError(error);
 }
}

main();