MNS 推出重磅功能,支持阿里云各大服务通过MNS实现事件通知(回调)。用户可以通过在MNS上创建事件通知的规则,来关注其他阿里云产品指定资源上产生的事件,并且由MNS以消息的方式主动推送到指定的接收端。
- 事件通知按区域提供服务
- 事件通知为异步通知,不会影响用户使用其他云产品的体验
- 事件通知消息在有效时间内不会丢失,当用户接收消息失败时,会按照指定的重试策略重试
- 事件通知消息的接收端目前支持HttpServer和Queue(可以将消息转移到Queue中,由用户来主动消费)
- 事件通知中消息推送的相关介绍请参考主题模型
注意事项
- 事件通知规则创建完,约10分钟后生效
- 在没有其他规则的情况下,默认规则匹配所有资源上的所有事件
- 在有其他规则并且也有默认规则的情况下,不匹配其他规则的事件会匹配默认规则
- 事件通知规则只能创建和删除,目前不支持更新
作用
- 如果您授权其他人可以对您的资源(Bucket)进行某些操作,而您又希望关注这些操作的话,您就可以创建对应的规则,使得这些操作发生时,能够主动通知到您。
- 如果您需要对操作进行统计的话,也可以通过事件通知的方式进行数据分析,查看一段时间内某个操作发生的次数,据此来分析您的业务最近有什么样的发展趋势。并且,您也可以将这些事件通知的消息继续导入其他服务(比如:EMR,进一步进行您自定义的分析)
- 您也可以通过事件通知监控您的资源上发生的某些操作的QPS等等指标。
OSS事件通知
OSS 支持将相关操作产生的事件通知到指定的接收端。其中:
1)不会触发事件通知
- 失败的操作目前不会触发事件通知
- 同步产生的操作不会触发事件通知
2)会触发事件通知:
- Lifecycle产生的操作会触发事件通知
- 镜像回写会触发两个事件:ObjectDownloaded:GetObject(由于文件还未拉取,因此etag等信息为空)和ObjectCreated:PutObject。
3)自定义参数
- OSS 事件通知还支持用户自定义参数,会在消息中将用户的合法自定义参数放在xVars字段中(自定义参数方法与 OSS 的 Callback 保持一致,可参考:这里)。
1. OSS请求返回值
在请求 OSS 进行相关操作时,事件通知不会影响原定接口的返回值,是通过在返回的Response中增加Header来描述触发事件通知的结果的。如果没有匹配事件通知的规则,则不会增加Header;如果匹配到了,不管事件通知是否触发成功,都会增加这个Header。Header格式如下:
- key: x-oss-process-status
- value:经过Base64编码,解码后为:
示例:
- x-oss-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F0aW9
2. 举例说明如何使用OSS事件通知
某个用户创建了一个Bucket:event-notification-test,然后他关心有哪些Object被上传到这个Bucket中了,于是他就可以创建下面这样的事件通知规则:
- 规则名称:event-notification-test-rule
- 资源描述:event-notification-test/
- 事件类型:PutObject、PostObject
- 接收终端:event-notification-test-queue
以此为例,[backcolor=transparent]
五步玩转OSS事件通知,请参考:
这里
[backcolor=transparent]默认规则
如果用户简单的想关注自己所有Bucket上产生的所有事件,可以简单的创建一条默认规则就可以了,即,[backcolor=transparent]
默认事件通知,请参考:
这里
注意:
- 如果仅有默认规则,则默认规则会匹配所有Bucket上产生的所有事件,但一旦创建了其他规则后,默认规则的语义就变成了:不匹配其他规则的情况下产生的事件通知才会匹配默认规则
3. OSS事件类型
OSS支持的事件类型包括:
注:
请求失败时,目前是不会触发事件通知的。
4. OSS事件通知消息格式
- OSS的事件通知消息内容是经过Base64编码的,解码后是Json格式,具体内容如下: