通过创建事件通知规则,消息服务MNS可以将日志服务指定资源上产生的事件以消息的方式主动推送到指定的接收端。本文介绍日志服务Log Service事件通知的前提条件和背景信息。

前提条件

  • 已创建日志服务Project和Logstore,详情请参见步骤二:创建Project和Logstore

    您的消息服务操作日志只能被推送到相同地域下的日志服务Project中。

  • 已授权消息服务使用AliyunMNSLoggingRole角色导出日志。
    单击云资源访问授权,根据提示完成授权。
    注意
    • 该操作仅在首次配置时需要,且需要由主账号进行授权。
    • 如果您使用的是RAM用户,该RAM用户需具备相关权限,详情请参见RAM用户授权
    • 请勿取消授权或删除RAM角色,否则将导致MNS日志无法正常推送到日志服务。

背景信息

如下图所示,如果您创建了事件通知规则,当您在请求Log Servcie相关操作时,消息服务MNS将Log Service指定资源上产生的事件以消息的方式推送到接收端。logservice流程

在请求Log Service进行相关操作时,事件通知通过在返回的Response中增加Header来描述触发事件通知的结果,不会影响原定接口的返回值。如果没有匹配事件通知的规则,则不会增加Header;如果匹配到了,不管事件通知是否触发成功,都会增加这个Header。Header格式如下:

  • key:x-log-process-status
  • value:经过Base64编码,解码后为:
    {
        "code":"Success",  //此次触发事件通知的结果。如果成功,返回Success,否则为Fail。Success表示Log Service将消息发送到了主题中,并不代表主题将消息推送到了Endpoint。
        "message":"NotificationSucceed",   //此次操作的详细描述。如果失败,此处会说明失败的原因。
        "type":"EventNotification",   //操作类型。事件通知的操作类型统一为EventNotification。
        "version":"1.0"
    }

示例如下:

x-log-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F0aW9'