
# 设置桶的事件通知配置(Node.js SDK)
![](https://support.huaweicloud.com/sdk-nodejs-devg-obs/public_sys-resources/notice_3.0-zh-cn.png)
开发过程中，您有任何问题可以在GitHub上[提交issue](https://github.com/huaweicloud/huaweicloud-sdk-nodejs-obs/issues)，或者在[华为云对象存储服务论坛](https://bbs.huaweicloud.com/forum/forum-620-1.html)中发帖求助。
#### 功能说明
设置桶的通知配置，桶上所发生的指定操作，都能及时得到通知。
#### 方法定义
```
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                                                                      | 可选     | 指定的对象名关键字，用以按照前缀或者后缀过滤对象。                                                                                                                                                                                                               |
   
 表1EventType 
| **访问方式**                                  | **类型**                                | **说明**                 |
|:---|:---|:---|
| 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);
       }
});
```
![](https://support.huaweicloud.com/sdk-nodejs-devg-obs/public_sys-resources/note_3.0-zh-cn.png)
使用**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);
       }
});
```
