You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
对象存储

对象存储

复制全文
下载 pdf
管理桶配置
管理事件通知(Node.js SDK)
复制全文
下载 pdf
管理事件通知(Node.js SDK)

如果您希望实时掌握在 TOS 中的资源变动,可以通过 Go SDK 设置事件通知规则。

注意事项

  • 只有桶 Owner 才可以创建事件通知服务。
  • 设置事件通知需要依赖函数服务,您需要提前在火山引擎中创建函数服务并发布,具体操作,请参见创建函数发布函数

设置事件通知

以下代码用于设置桶的事件通知规则。

// 导入 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 cloudFunctionConfiguration = {
      // 事件通知名称
      RuleId: 'TestNotification',
      // 需要订阅的事件
      Events: ['tos:ObjectCreated:Put'],
      // 设置匹配对象的前缀信息和后缀信息
      Filter: {
        TOSKey: {
          FilterRules: [
            {
              Name: 'prefix',
              Value: 'test-',
            },
            {
              Name: 'suffix',
              Value: '-ci',
            },
          ],
        },
      },
      // 设置订阅事件的函数服务,该参数是必填
      CloudFunction: 'Provide the ID of your cloud function',
    };
    const { requestId: putNotificationRequestId } = await client.putBucketNotification({
      bucket: bucketName,
      cloudFunctionConfigurations: [cloudFunctionConfiguration],
    });
    console.log('putBucketNotification Request ID: ', putNotificationRequestId);
  } 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: getNotificationRequestId } = await client.getBucketNotification({
      bucket: bucketName,
    });
    console.log('getBucketNotification Request ID: ', getNotificationRequestId);
    console.log('CloudFunctionConfigurations Length:  ', data.CloudFunctionConfigurations.length);
    for (const conf of data.CloudFunctionConfigurations) {
      // 事件通知名称
      console.log('Cloud Function Configuration ID:', conf.RuleId);
      // 订阅的事件
      console.log('Cloud Function Configuration Events: ', conf.Events);
      // 设置匹配对象的前缀信息和后缀信息
      console.log('Cloud Function Configuration Filter: %o', conf.Filter);
      // 设置订阅事件的函数服务
      console.log('Cloud Function Configuration CloudFunction: ', conf.CloudFunction);
    }
  } catch (error) {
    handleError(error);
  }
}

main();

相关文档

关于事件通知的更多信息,请参见事件通知

最近更新时间:2024.02.04 18:31:10
这个页面对您有帮助吗?
有用
有用
无用
无用