更新时间:2026-07-13 GMT+08:00
分享

设置桶的事件通知配置(Node.js SDK)

开发过程中,您有任何问题可以在GitHub上提交issue,或者在华为云对象存储服务论坛中发帖求助。

功能说明

设置桶的通知配置,桶上所发生的指定操作,都能及时得到通知。

方法定义

ObsClient.setBucketNotification

请求参数

参数名称

参数类型

约束

描述

Bucket

String

必选

桶名。

RequestDate

String

Date

可选

指定请求时间。

说明:

当为String类型时,必须符合ISO8601或RFC822规范。

TopicConfigurations

Array

可选

简单通知服务配置列表。

  

ID

String

可选

简单通知服务配置ID。

Topic

String

必选

事件通知主题的URN,当OBS检测到桶中发生特定的事件后,将会发布通知消息至该主题。

Event

Array

必选

需要发布通知消息的EventType列表。

Filter

Object

可选

过滤规则信息。

  

FilterRules

Array

可选

过滤规则列表。

  

Name

String

可选

指定规则按对象名前缀或者后缀进行过滤,支持的值:

  • prefix
  • suffix

Value

String

可选

指定的对象名关键字,用以按照前缀或者后缀过滤对象。

FunctionGraphConfigurations

Array

可选

函数工作流服务配置列表。

  

ID

String

可选

函数工作流服务配置ID。

FunctionGraph

String

必选

函数工作流服务的URN,当OBS检测到桶中发生特定的事件后,将会发送消息至函数工作流服务调用执行该工作流。

Event

Array

必选

需要发送消息至函数工作流服务的EventType列表。

Filter

Object

可选

过滤规则信息。

  

FilterRules

Array

可选

过滤规则列表。

  

Name

String

可选

指定规则按对象名前缀或者后缀进行过滤,支持的值:

  • prefix
  • suffix

Value

String

可选

指定的对象名关键字,用以按照前缀或者后缀过滤对象。

表1 EventType

访问方式

类型

说明

EventObjectCreatedAll

ObjectCreated:*

所有创建对象事件。

EventObjectCreatedPut

ObjectCreated:Put

PUT上传对象事件。

EventObjectCreatedPost

ObjectCreated:Post

POST上传对象事件。

EventObjectCreatedCopy

ObjectCreated:Copy

复制对象事件。

EventObjectCreatedCompleteMultipartUpload

ObjectCreated:CompleteMultipartUpload

合并段事件。

EventObjectRemovedAll

ObjectRemoved:*

所有删除对象事件。

EventObjectRemovedDelete

ObjectRemoved:Delete

指定对象版本号删除对象事件。

EventObjectRemovedDeleteMarkerCreated

ObjectRemoved:DeleteMarkerCreated

多版本开启后,不指定对象版本号删除对象事件。

代码示例一:开启事件通知

您可以通过ObsClient.setBucketNotification设置桶的事件通知。以下代码展示了如何设置桶的事件通知:

// 引入obs库
// 使用npm安装
var ObsClient = require('esdk-obs-nodejs');
// 使用源码安装
// var ObsClient = require('./lib/obs');

// 创建ObsClient实例
const obsClient = new ObsClient({
    //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
    //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
    access_key_id: process.env.ACCESS_KEY_ID,
    secret_access_key: process.env.SECRET_ACCESS_KEY,
    //这里以华北-北京四为例,其他地区请按实际情况填写
    server: 'https://obs.cn-north-4.myhuaweicloud.com'
    
});

obsClient.setBucketNotification({
       Bucket: 'bucketname',
       TopicConfigurations : [
           {
                ID : 'id1',
                Topic : 'your topic URN',
                Event : [obsClient.enums.EventObjectCreatedAll],
                Filter : {
                     FilterRules :[{Name : 'prefix', Value: 'smn'}, {Name : 'suffix', Value: '.jpg'}]
                }
            }
       ],
       FunctionGraphConfigurations: [
           {
                ID : 'id1',
                FunctionGraph: 'your function graph URN',
                Event : [obsClient.enums.EventObjectCreatedAll],
                Filter : {
                     FilterRules :[{Name : 'prefix', Value: 'xxx'}, {Name : 'suffix', Value: '.jpg'}]
                }
            }
       ]
}, (err, result) => {
       if(err){
              console.log('Error-->' + err);
       }else{
              console.log('Status-->' + result.CommonMsg.Status);
       }
});

使用TopicConfigurations参数指定简单通知配置,使用FunctionGraphConfigurations参数指定函数工作流服务配置。

代码示例二:关闭事件通知

关闭桶事件通知实际上就是调用ObsClient.setBucketNotification将事件通知配置清空,以下代码展示了如何清除桶的事件通知:

// 引入obs库
// 使用npm安装
var ObsClient = require('esdk-obs-nodejs');
// 使用源码安装
// var ObsClient = require('./lib/obs');

// 创建ObsClient实例
const obsClient = new ObsClient({
    //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
    //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
    access_key_id: process.env.ACCESS_KEY_ID,
    secret_access_key: process.env.SECRET_ACCESS_KEY,
    //这里以华北-北京四为例,其他地区请按实际情况填写
    server: 'https://obs.cn-north-4.myhuaweicloud.com'
    
});

obsClient.setBucketNotification({
       Bucket: 'bucketname',
       TopicConfigurations : []
}, (err, result) => {
       if(err){
              console.log('Error-->' + err);
       }else{
              console.log('Status-->' + result.CommonMsg.Status);
       }
});

相关文档