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

示例说明

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

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

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

流程

五步玩转事件通知:

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

步骤一:创建Bucket

  1. 登录OSS管理控制台
  2. 如果目前Bucket列表为空,单击左侧存储空间列表中的创建Bucket;若已创建过Bucket,则单击左侧存储空间列表中的新增按钮+,或单击页面右上方的创建 Bucket
  3. 创建 Bucket对话框配置Bucket参数。在Bucket 名称输入框输入event-notification-test以及选择所属地域为华北2(北京),此处方便测试可以设置读写权限公共读写
  4. 单击确定

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

  1. 在MNS控制台顶部菜单栏,选择对应地域(Region),如华东1(杭州)
  2. 在左侧导航栏,单击队列
  3. 队列页面的右上角,单击创建队列
  4. 新建队列对话框中填写队列属性,单击确认

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

  1. 在MNS控制台左侧导航栏,单击事件通知,并在产品名称下拉框中,选择对象存储OSS
  2. 事件通知页面右上角,单击创建规则
  3. 创建规则对话框中,选择新建规则、添加接收终端,如下图所示。
    说明 其中资源描述稍复杂,可以单击资源描述后面的问号图标查看详细说明,摘录如下(特别注意资源描述不能有交集):

    资源描述可以是全名、前缀、后缀以及前后缀,不同资源描述不能有交集。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。
    其他参数说明如下:
    • 接收端目前支持HttpServer、队列和主题,此处选择步骤二中创建的队列MyQueue。
    • 创建一条新规则后,MNS会自动创建一个主题,并且以指定的Endpoint创建订阅,可以从MNS控制台发布订阅的标签页进行查看,并且可以自由管理这些主题与Subscription(例如创建新的订阅)。
    • 新规则创建完成后,需要约10分钟的时间才能生效。

步骤四:上传Object

新规则创建成功10分钟后,回到OSS控制台,上传Object到步骤一创建的Bucket event-notification-test中,验证是否能够触发事件通知。

  1. 在OSS控制台左侧存储空间列表中,单击event-notification-test
  2. 选择文件管理 > 上传文件
  3. 上传任务对话框等待任务完成,之后关闭对话框。

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

上传Object成功后,回到MNS控制台完成以下操作。

  1. 在MNS控制台左侧导航栏,单击队列
  2. 在队列列表,查看步骤二中创建的队列的活跃消息数是否为1。

    另外,也可以在主题列表中查看到默认创建的主题中多了一条消息,至此可验证事件通知成功。

  3. 在队列列表,单击接收消息
  4. 推送的事件通知消息内容如下:
    {"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.128.107"}, "responseElements": {"requestId": "577BCD4FF3D45CE477F2****"}, "userIdentity": {"principalId": "139040265003****"}}]}            

    其具体含义请参见OSS事件通知概述