开发者社区> 问答> 正文

消息服务的OSS 事件如何通知?

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编码,解码后为:



示例:
  1. 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支持的事件类型包括:
注: 请求失败时,目前是不会触发事件通知的
事件名称说明
ObjectCreated:PutObject
ObjectCreated:PostObject
ObjectCreated:CopyObject
ObjectCreated:InitiateMultipartUpload
ObjectCreated:UploadPart
ObjectCreated:UploadPartCopy
ObjectCreated:CompleteMultipartUpload
ObjectCreate:AppendObject
ObjectDownload:GetObject
ObjectRemove:DeleteObject
ObjectRemove:DeleteObjects
ObjectRemoved:AbortMultipartUpload


4. OSS事件通知消息格式

  • OSS的事件通知消息内容是经过Base64编码的,解码后是Json格式,具体内容如下:




展开
收起
轩墨 2017-10-24 11:33:30 2891 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载
消息服务在Serverless中的应用 立即下载
使命必达—钉钉企业级消息服务的机遇与挑战 立即下载