本教程旨在帮助您通过新建规则来使用MNS提供的OSS事件通知功能。
示例说明
某个用户创建了一个Bucket:event-notification-test,并关心有哪些Object被上传到这个Bucket中了,且想把事件通知消息推送到队列中,然后再慢慢消费,那该用户可以创建下面这样的事件通知规则:
- 规则名称:event-notification-test-rule
- 资源描述:event-notification-test/
- 事件类型:PutObject、PostObject
- 接收终端:MyQueue
事件通知概述,请参见事件通知概述。
流程
五步玩转事件通知:
- 创建Bucket。
- 创建消息接收的Queue。
- 创建事件通知规则。
- 上传Object。
- 查看队列中是否接收到消息。
注意 请确保您所创建的所有资源均在同一地域。
步骤一:创建Bucket
- 登录OSS管理控制台
- 如果目前Bucket列表为空,单击左侧存储空间列表中的创建Bucket;若已创建过Bucket,则单击左侧存储空间列表中的新增按钮+,或单击页面右上方的创建 Bucket。
- 在创建 Bucket对话框配置Bucket参数。在Bucket 名称输入框输入event-notification-test以及选择所属地域为华北2(北京),此处方便测试可以设置读写权限为公共读写。
- 单击确定。
步骤二:创建消息接收的队列
- 在MNS控制台顶部菜单栏,选择对应地域(Region),如华东1(杭州)。
- 在左侧导航栏,单击队列。
- 在队列页面的右上角,单击创建队列。
- 在新建队列对话框中填写队列属性,单击确认。
步骤三:创建事件通知规则
- 在MNS控制台左侧导航栏,单击事件通知,并在产品名称下拉框中,选择对象存储OSS。
- 在事件通知页面右上角,单击创建规则。
- 在创建规则对话框中,选择新建规则、添加接收终端,如下图所示。
说明 其中资源描述稍复杂,可以单击资源描述后面的问号图标查看详细说明,摘录如下(特别注意资源描述不能有交集):
资源描述可以是全名、前缀、后缀以及前后缀,不同资源描述不能有交集。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中,验证是否能够触发事件通知。
- 在OSS控制台左侧存储空间列表中,单击event-notification-test。
- 选择 。
- 在上传任务对话框等待任务完成,之后关闭对话框。
步骤五:查看队列中是否接收到消息
上传Object成功后,回到MNS控制台完成以下操作。
- 在MNS控制台左侧导航栏,单击队列。
- 在队列列表,查看步骤二中创建的队列的活跃消息数是否为1。
另外,也可以在主题列表中查看到默认创建的主题中多了一条消息,至此可验证事件通知成功。
- 在队列列表,单击接收消息。
- 推送的事件通知消息内容如下:
{"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事件通知概述。