华为云对象存储OBS事件通知_云淘科技

基于SMN的事件通知功能已下线,建议您使用基于DIS的事件通知。如有疑问,请提交工单联系华为云客服。

您可以设置在桶中发生某些特定事件时收到数据接入服务(DIS)发送的通知,以便及时掌握桶中数据的最新动态。

DIS通知

OBS提供的DIS通知功能,主要面向大数据场景,要求OBS与数据接入服务(DIS)及其他大数据相关服务结合使用。

仅支持华东-上海一、华北-北京四、华南-广州区域。

当OBS桶中触发了对象上传、下载、删除等操作事件时,OBS将事件通知发送给DIS,再通过DIS通道将通知分发给下游的大数据处理服务,如数据湖工厂(DLF)。大数据处理服务接到通知后,利用委托的OBS权限对OBS中更新的数据进行实时分析处理。您可以将通知配置为按对象名称的前缀或后缀进行筛选。

假设在某大数据场景下,用户要求每隔5分钟对OBS中上传的“.mp4”后缀的视频文件进行一次归类。用户可以在OBS中创建一个DIS通知规则,规定在将带有“.mp4”后缀的视频文件上传到OBS桶时发送通知。一旦规则触发,OBS会发送通知给DIS,经DIS通道分发给下游的DLF。在DLF中经过开发,可实现每5分钟汇总一次DIS通知,并将这些通知中涉及的视频文件统一移动到OBS某个文件夹下,再对其进行进一步的分析处理。

图1 DIS通知示意图

约束与限制

需要使用IAM增加Tenant Administrator权限后才能设置、获取、删除DIS通知策略。使用DIS消息通知需要使用IAM创建对OBS云服务的委托,委托赋予的权限需为数据接入服务DIS的DIS Administrator或DIS User权限。
一个桶中最多同时配置10条DIS通知规则。
新创建的DIS通知将在5分钟之内生效。
一个桶的多条DIS通知规则不允许重复,即任意对象在发生任意事件时都不能同时匹配两条以上的DIS通知规则,重复规则会创建失败。

针对同一事件,如果配置了一条前后缀都为空的规则,则不允许再配置第二条规则。前后缀都为空表示对所有对象生效。

例如:针对Put事件,已存在一条规则A,定义的前缀是“abcd”,后缀是“.txt”。如果要创建另外一条针对Put事件的规则B,则规则B配置不同前后缀的结果如表1所示。

表1 规则B前后缀配置场景及结果

规则A前后缀配置

规则B前后缀配置

规则B创建结果

原因

前缀:abcd

后缀:.txt

前缀:abcd

后缀:.txt

失败

前后缀相同

前缀:abcd

后缀:空

失败

前缀相同,后缀B包含A

前缀:ab

后缀:xt

失败

前缀B包含A,后缀B包含A

前缀:abef

后缀:.txt

成功

前缀不同,后缀相同

前缀:abcd

后缀:.mp4

成功

前缀相同,后缀不同

事件通知消息结构

OBS发布的事件通知消息是具有以下结构的JSON消息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{  
    "Records":[
        {
            "eventVersion":"", //版本号,目前为"3.0"
            "eventSource":"", //消息源,固定为"OBS"
            "eventRegion":"", //事件所在的region
            "eventTime":"", //事件时间,格式为ISO-8601,示例:2020-07-10T09:24:11.418Z
            "eventName":"", //触发事件通知的事件名
            "userIdentity":{
                "ID":"" //触发事件的用户对应的计费ID
            },
            "requestParameters":{
                "sourceIPAddress":"" //请求的源IP
            },
            "responseElements":{
                "x-obs-request-id":"", //请求对应的requestid
                "x-obs-id-2":"" //帮助定位问题的特殊符号
            },
            "obs":{
                "Version":"1.0",
                "configurationId":"", //此事件匹配的OBS中事件通知规则的名称
                "bucket":{
                    "name":"examplebucket",
                    "ownerIdentity":{
                        "ID":"" //桶拥有者的账号ID
                    },
                    "bucket":"" //桶名
                },
               "object":{
                    "key":"", //对象名
                    "eTag":"", //对象的etag
                    "size": , //对象的大小
                    "versionId":"null", //对象的版本ID
                    "sequencer":""  //确定某个特定对象事件顺序的标识
                }
            }
        }
    ]
}

请注意以下几点:

您可以通过“responseElements”键值来跟踪OBS的请求。其中,“x-obs-request-id”和“x-obs-id-2”均可用于跟踪单个请求,这两个参数的值即OBS响应请求时返回的值。
“obs”键值包含了事件中涉及的桶和对象的相关信息。其中,对象键名称进行了URL编码,例如,“TEST/中 文.jpg”将变为“TEST%2F%E4%B8%AD+%E6%96%87%2F.jpg”。

二次开发时,如果使用OBS SDK下载此对象 ,则需要先对对象名进行URL解码,再调用下载接口。而如果直接使用浏览器访问此对象,则不需要解码。

“sequencer”键值可以确定事件顺序。通常情况下,事件通知并非按照事件发生的顺序进行提示,但是创建对象(PUT)和删除对象(DELETE)的事件通知包含sequencer,该键值可帮助确定特定对象的事件顺序。比较同一对象键上的两个事件通知的十六进制sequencer字符串时,sequencer值越大,事件发生越晚。

sequencer不能用于确定不同对象键上的事件顺序。
sequencer确定的事件顺序仅供参考,该方法不适用于高可靠性系统。

消息示例:

测试消息-当您在桶上配置事件通知时,OBS会发送以下测试消息

{  
   "Service":"OBS",
   "Event":"TestEvent",
   "Time":"1970-01-01T00:00:00.000Z",
   "Bucket":"examplebucketname",
   "RequestId":"0002F4BCF6000001563B064B17B2094D",
   "HostId":"2Zf+b9AmbaBgNQ+YE8XU2j87DZaBNxu4TaMiOCTqpmkC2SA9ouf8TpB2SY5j3i4"
}

使用PUT请求创建对象时的示例消息-以下消息是OBS发布的ObjectCreated:Put事件的消息示例

{  
    "Records":[
        {
            "eventVersion":"3.0",
            "eventSource":"OBS",
            "eventRegion":"cn-east-3",
            "eventTime":"2018-06-26T14:37:05.468Z",
            "eventName":"ObjectCreated:Put",
            "userIdentity":{
                "ID":"71f3901173514e6988115ea2c26d1999"
            },
            "requestParameters":{
                "sourceIPAddress":"104.55.173.69"
            },
            "responseElements":{
                "x-obs-request-id":"9006000001643C86D03C300BE8860FA7",
                "x-obs-id-2":"2+/Ucr6uinCJAbUejWyQ+rhxkuf/K/9uoaXuewIi/SE9j4tU5LwaXTTlD1gvMv2o"
            },
            "obs":{
                "Version":"1.0",
                "configurationId":"ConfigurationId",
                "bucket":{
                    "name":"examplebucket",
                    "ownerIdentity":{
                        "ID":"b4bf1b36d9ca43d984fbcb9491b6fce9"
                    },
                    "bucket":"examplebucket"
                },
                "object":{
                    "key":"object0001.txt",
                    "eTag":"3b9680702b9a12733c5490d1b15c7607",
                    "size":538,
                    "versionId":"null",
                    "sequencer":"000000001643C86D06576F5320000000"
                }
            }
        }
    ]
}

由于潜在的Internet问题或电子邮件传送限制,有时通知可能无法成功送达HTTP或电子邮件终端节点。

使用方式

支持发送DIS通知的操作事件以及DIS通知的配置方法,请参见配置DIS通知。

父主题: 数据管理

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家