本教程旨在帮助您通过新建规则来使用消息服务MNS提供的OSS事件通知功能。

背景信息

您创建了一个Bucket:event-notification-test,并关心有哪些Object被上传到这个Bucket中了,且想把事件通知消息推送到队列中,然后再慢慢消费,您可以创建以下事件通知规则:

  • 规则名称:event-notification-test-rule
  • 资源描述:event-notification-test
  • 事件类型:PutObject、PostObject
  • 接收终端:MyQueue

事件通知概述,请参见事件通知概述

流程

五步玩转事件通知:

  1. 创建Bucket。
  2. 创建接收消息的队列。
  3. 创建事件通知规则。
  4. 上传Object。
  5. 查看队列中是否接收到消息。
注意 请确保您所创建的所有资源均在同一地域。

步骤一:创建Bucket

  1. 登录OSS管理控制台
  2. 在左侧导航栏,单击Bucket列表
  3. Bucket列表页面,单击创建Bucket
  4. 创建 Bucket对话框,配置Bucket参数,然后单击确定
    • Bucket 名称:Bucket的名称,例如event-notification-test
    • 读写权限:Bucket的读写权限,为方便测试选择公共读写

步骤二:创建消息接收的队列

  1. 登录MNS控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击队列
  4. 队列页面的右上角,单击创建队列
  5. 创建队列对话框中,填写队列属性,单击确定

步骤三:创建事件通知规则

  1. 登录MNS控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击事件通知
  4. 进入事件通知页面,在产品名称列表中,选择对象存储OSS
  5. 事件通知页面右上角,单击创建规则
  6. 创建规则对话框中,选择新建规则,设置规则名称、事件类型等参数,然后单击确定创建规则
    说明 资源描述可以是全名、前缀、后缀以及前后缀,不同资源描述不能有交集。OSS资源包括Bucket和Object,通过“/”连接。以Bucket(movie)和Object(hello.avi)为例。
    • 全名:movie/hello.avi。
    • 前缀:
      • movie/hello,表示movie中以hello为前缀的所有Object。
      • movie/,表示movie中所有的Object。
      • mov,表示以mov为前缀的所有Bucket中的所有Object。
    • 后缀:.avi,表示所有Bucket中以.avi为后缀的Object。
    • 前后缀:前movie/,后.avi,表示movie中所有以.avi为后缀的Object。
    其他参数说明如下:
    • 接收终端目前支持HTTP、队列和主题,此处选择队列MyQueue。
    • 创建一条新规则后,消息服务MNS会自动创建一个主题,并且以指定的Endpoint创建订阅,可以从消息服务MNS控制台发布订阅的标签页进行查看,并且可以自由管理这些主题与Subscription(例如创建新的订阅)。
    • 新规则创建完成后,需要约10分钟的时间才能生效。

步骤四:上传Object

  1. 登录OSS管理控制台
  2. 在左侧导航栏,单击Bucket列表
  3. Bucket列表页面,单击Bucket名称列下的event-notification-test。
  4. 选择文件管理 > 文件管理,然后单击上传文件
  5. 上传任务对话框,配置文件上传目录、文件ACL,单击直接上传

    状态列显示:上传成功,即可关闭对话框。

步骤五:查看队列中是否接收到消息

  1. 登录MNS控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击队列
  4. 队列页面,找到MyQueue,查看其右侧活跃消息数对应的数字。

    如果活跃消息数为1,说明队列中成功接收到了消息。

  5. 队列页面,单击接收消息
    推送的事件通知消息内容如下:
    {
        "events":[
            {
                "eventName":"ObjectCreated:PutObject",
                "eventSource":"acs:oss",
                "eventTime":"2016-07-05T15:07:59.000Z",
                "eventVersion":"1.0",
                "oss":{
                    "bucket":{
                        "arn":"acs:oss:cn-shenzhen:12345:event-notification-test",
                        "name":"event-notification-test",
                        "ownerIdentity":"12345"
                    },
                    "object":{
                        "deltaSize":0,
                        "eTag":"D41D8CD98F00B204E9800998ECF8427E",
                        "key":"a",
                        "size":0
                    },
                    "ossSchemaVersion":"1.0",
                    "ruleId":"event-notification-test-rule"
                },
                "region":"cn-shenzhen",
                "requestParameters":{
                    "sourceIPAddress":"140.205.**.**"
                },
                "responseElements":{
                    "requestId":"577BCD4FF3D45CE477F2****"
                },
                "userIdentity":{
                    "principalId":"139040265003****"
                }
            }
        ]
    }
    其具体含义请参见OSS事件通知概述