功能介绍

事件通知 (Bucket Notification) 服务,它提供了一种机制,使得当某些指定的事件在对象存储中发生时,能够触发通知或者事件处理。

用户可以通过配置该功能,规定当指定对象被删除时,系统发送通知;或者当某图片上传完成时,对该图片进行相关处理,并将处理结果发送至指定 URL 等。

使用限制

  • 配置事件通知规则的用户必须是 Bucket 的所有者。

  • 若设置多个事件通知规则,对象存储会对每条规则逐一进行检查匹配,最终将可能触发多个事件。

操作步骤

  1. 进入对象存储的主页面,选择待设置事件通知的 Bucket,点击 右键 > 设置

    set bucket replication1
  2. 进入 Bucket 设置页面,点击 事件通知 > 添加通知

    set bucket notification2
  3. 在弹出的 添加通知 对话框内,根据页面提示信息,填写相关参数后,点击 提交 按钮:

    页面参数说明:

    • ID: 事件通知规则的标识符。由字母,数字或者符号组成,用来描述通知的用途。

    • 对象匹配规则: 用于设置需要设置事件通知的文件名的规则。匹配规则是基于 Glob Pattern 的模式。为空时表示匹配所有对象。

    • 处理方式: 可选值为 推送通知图片处理

    • 通知 URL:接收 推送通知图片处理 结果的 URL。

    • 事件类型

      • 处理方式 设置为 推送通知 时,可选 事件类型创建对象完成删除对象完成终止分段上传完成分段上传

      • 处理方式 设置为 图片处理 时,可选 事件类型创建对象完成完成分段上传

    • 自定义参数:当 处理方式 设置为 图片处理 时,该参数设置有效。用于设置图片处理的相关参数,以及处理后的结果存储 Bucket 以及相应的对象名。

  4. 成功创建对跨域复制规则,列表显示:

    set bucket notification4
  5. 如需删除相应的事件通知规则,可选择相应的规则,并点击 删除 按钮:

    set bucket notification5
  6. 弹出 提示 对话框,确认无误后,点击 确认 按钮:

    set bucket notification6
  7. 成功删除的事件通知规则,不再列表显示:

    set bucket notification7

消息格式

当触发事件通知时,对象存储发出的消息格式如下:

{
    "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

事件类型,可选值为:

  • 创建对象完成:create_object

  • 删除对象完成:delete_object

  • 完成分段上传:complete_upload

  • 终止分段上传: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.schema_version

string

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
                }
            }
        }
    ]
}