事件通知
功能介绍
事件通知 (Bucket Notification) 服务,它提供了一种机制,使得当某些指定的事件在 QingStor 对象存储中发生时,能够触发通知或者事件处理。
用户可以通过配置该功能,规定当指定对象被删除时,系统发送通知;或者当某图片上传完成时,对该图片进行相关处理,并将处理结果发送至指定 URL 等。
使用限制
-
配置事件通知规则的用户必须是 Bucket 的所有者。
-
若设置多个事件通知规则,QingStor 对象存储会对每条规则逐一进行检查匹配,最终将可能触发多个事件。
操作步骤
- 进入 QingStor 对象存储的主页面,选择待设置事件通知的 Bucket,点击右键 > 设置:
- 进入 Bucket 设置页面,点击事件通知 > 添加通知:
- 在弹出的对话框内,根据页面提示信息,填写相关参数后,点击提交按钮:
说明:
-
处理方式:可选值为
推送通知
与图片处理
。- 当 处理方式 设置为
推送通知
时,表示某项操作完成后,需触发通知用户。所以 事件类型 有创建对象完成
,删除对象完成
,终止分段上传
,完成分段上传
;
- 当 处理方式 设置为
图片处理
时,表示某项操作完成后,需触发相应的图片处理,并将处理结果发送给用户。所以设置完 事件类型:创建对象完成
,完成分段上传
后,需要对图片处理的参数进行设定。
- 当 处理方式 设置为
-
ID: 事件通知规则的标识符。由字母,数字或者符号组成,用来描述通知的用途。
-
对象匹配规则: 用于设置需要设置事件通知的文件名的规则。匹配规则是基于 Glob Pattern 的模式。为空时表示匹配所有对象。
-
通知 URL:接收
推送通知
或图片处理
结果的 URL。 -
自定义参数:用于设置图片处理的相关参数,以及处理后的结果存储 Bucket 以及相应的对象名。或者提供给推送通知的自定义参数。
- 成功创建的事件通知,列表显示:
- 如需删除相应的事件通知规则,可选择相应的规则,并点击删除按钮:
- 弹出对话框,确认无误后,点击确认按钮:
- 成功删除的事件通知规则,不再列表显示:
消息格式
当触发事件通知时,QingStor 对象存储发出的消息格式如下:
{
"events": [
{
"event_source": string,
"event_version": string,
"event_type": string,
"event_time": string,
"zone_id": string,
"user_identify": {
"principal_id": string
},
"response_elements": {
"request_id": string
},
"qingstor": {
"schema_version": string,
"notification_id": string,
"bucket": {
"name": string
},
"object": {
"name": string,
"etag": string,
"size": int,
}
}
}
]
}
各字段说明如下:
字段名 | 类型 | 说明 | 是否必须 |
---|---|---|---|
event_source | string | 事件来源,目前固定为 qingstor |
是 |
event_version | string | 事件版本,目前为 1.0 |
是 |
event_type | string | 事件类型,可选值为: 1.创建对象完成:create_object 2.删除对象完成:delete_object 3.完成分段上传:complete_upload 4.终止分段上传:abort_upload |
是 |
event_time | string | 事件时间,ISO-8601 格式的时间 |
是 |
zone_id | string | 事件关联的 Zone ID | 是 |
user_identify | object | user_identify 配置 | 是 |
user_identify.principal_id | string | 用户 ID,如 usr-xxxx |
是 |
response_elements | object | response_elements 的配置 | 是 |
response_elements.request_id | string | 发起该事件的请求 ID | 是 |
qingstor | object | QingStor 配置 | 是 |
qingstor.schema_version | string | QingStor Schema 的版本 | 是 |
qingstor.notification_id | string | 相关联的事件通知规则的 ID | 是 |
qingstor.bucket | object | 该事件所描述 Object 的所在 Bucket 信息 | 是 |
qingstor.bucket.name | string | 该事件所描述 Object 的所在 Bucket 名称 | 是 |
qingstor.object | object | 该事件所描述 Object 信息 | 是 |
qingstor.object.name | string | 该事件所描述 Object 名 | 是 |
qingstor.object.etag | string | 该事件所描述 Object 的 Etag | 是 |
qingstor.object.size | int | 该事件所描述 Object 的 Size | 是 |
示例:
{
"events": [
{
"event_source": "qingstor",
"event_version": "1.0",
"event_type": "create_object",
"event_time": "2021-08-31T06:25:46.000Z",
"zone_id": "gamma",
"user_identify": {
"principal_id": "usr-iks7Beds"
},
"response_elements": {
"request_id": "45b47b6a30678cb2"
},
"qingstor": {
"schema_version": "1.0",
"notification_id": "mp4-notify",
"bucket": {
"name": "max-test2"
},
"object": {
"name": "abc/5.mp4",
"etag": "10c918b1d01aea85864ee65d9e0c2305",
"size": 9840497
}
}
}
]
}
相关API
Bucket Replication API 见 API 文档:
操作 | API | 说明 |
---|---|---|
设置 Bucket Notification | PUT Bucket Notification | 用于设置 Bucket 事件通知规则 |
获取 Bucket Notification | GET Bucket Notification | 用于获取已有的 Bucket 事件通知规则 |
删除 Bucket Notification | DELETE Bucket Notification | 用于删除已经设置的事件通知规则 |