设置桶的事件通知配置(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 | 可选 | 指定规则按对象名前缀或者后缀进行过滤,支持的值:
| |||
| Value | String | 可选 | 指定的对象名关键字,用以按照前缀或者后缀过滤对象。 | |||
| FunctionGraphConfigurations | Array | 可选 | 函数工作流服务配置列表。 | |||
| ID | String | 可选 | 函数工作流服务配置ID。 | |||
| FunctionGraph | String | 必选 | 函数工作流服务的URN,当OBS检测到桶中发生特定的事件后,将会发送消息至函数工作流服务调用执行该工作流。 | |||
| Event | Array | 必选 | 需要发送消息至函数工作流服务的EventType列表。 | |||
| Filter | Object | 可选 | 过滤规则信息。 | |||
| FilterRules | Array | 可选 | 过滤规则列表。 | |||
| Name | String | 可选 | 指定规则按对象名前缀或者后缀进行过滤,支持的值:
| |||
| Value | String | 可选 | 指定的对象名关键字,用以按照前缀或者后缀过滤对象。 | |||
| 访问方式 | 类型 | 说明 |
|---|---|---|
| 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);
}
});