您可以在OSS管理控制台设置事件通知规则,自定义您关注的Object。当这些Object发生指定事件时,您可以及时收到通知。

使用限制

  • 华南2(河源)、华南3(广州)、华北5(呼和浩特)、华北6(乌兰察布)、阿联酋(迪拜)、马来西亚(吉隆坡)地域暂不支持事件通知功能。
  • 同一地域仅支持配置10条事件通知规则。
  • 通过RTMP推流方式生成的TS和M3U8文件不会触发事件通知规则。有关RTMP推流的介绍,请参见LiveChannel简介

使用说明

您在创建事件通知规则后,若请求者对您OSS进行的操作触发了事件通知规则,消息服务MNS将请求者对OSS进行的相关操作发送到您配置的HTTP服务器或MNS的队列中。具体流程如下图所示:

事件类型

事件类型 说明
PutObject 通过简单上传创建或覆盖文件。
PostObject 通过表单上传创建或覆盖文件。
CopyObject 通过拷贝文件创建或覆盖文件。
InitiateMultipartUpload 初始化一个分片上传任务。
UploadPart 通过上传分片创建或覆盖文件。
UploadPartCopy 通过分片拷贝创建或覆盖文件。
CompleteMultipartUpload 完成分片上传。
AppendObject 通过追加上传创建或追加文件。
GetObject 通过简单下载获取文件。
DeleteObject 删除单个文件。
DeleteObjects 删除多个文件。
ObjectReplication:ObjectCreated 通过跨区域复制生成文件。
ObjectReplication:ObjectRemoved 通过跨区域复制删除文件。
ObjectReplication:ObjectModified 通过跨区域复制覆盖文件。
ObjectCreatedGroup 所有创建或覆盖文件操作。
ObjectDownloadedGroup 所有获取文件操作。
ObjectRemovedGroup 所有删除文件操作。
注意 ObjectCreatedGroup、ObjectDownloadedGroup、ObjectRemovedGroup三种事件类型目前仅支持在中国(香港)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)、澳大利亚(悉尼)、新加坡、英国(伦敦)地域配置。

消息通知

OSS的事件通知消息内容经过Base64编码,解码后是JSON格式,具体内容如下:
{"events": [
      {
        "eventName": "",  //事件通知类型。
        "eventSource": "", //设置事件通知的消息源,固定为"acs:oss"。
        "eventTime": "", //事件时间,使用ISO-8601时间表示法。
        "eventVersion": "", //事件通知版本号,目前为“1.0”。
        "oss": {
            "bucket": {
                "arn": "", //Bucket的唯一标识符,格式为"acs:oss:region:uid:bucketname"。
                "name": "", //目标Bucket名称。
                "ownerIdentity": "" //Bucket的拥有者。
            }, 
            "object": {
                "deltaSize": "", //Object大小的变化量。例如,新增一个文件,这个值就是文件大小;覆盖一个文件,这个值就是新文件与旧文件的大小差值,因此可能为负数。
                "eTag": "", //Object的ETag。
                "key": "", //Object名称。
                "position": "", //仅适用于ObjectCreated:AppendObject事件,表示此次请求开始追加的位置。首次AppendObject请求的位置从0字节开始。
                "readFrom": "", //仅适用于ObjectDownloaded:GetObject事件,表示文件开始读取的位置。对于非Range请求,此项为0;对于Range请求,此项为请求的开始字节。
                "readTo": "", //仅适用于ObjectDownloaded:GetObject事件,表示文件最后读取的位置。对于非Range请求,此项为文件的大小;对于Range请求,此项为Range请求的结束字节加1。
                "size": "" //Object大小。
                }, 
        "ossSchemaVersion": "", //此字段域的版本号,目前为“1.0”。
        "ruleId": "GetObject", //此事件匹配的规则ID。
        "region": "", //Bucket所在的地域。
        "requestParameters": {
            "sourceIPAddress": "" //请求的源IP地址。
            }, 
        "responseElements": {
            "requestId": "" //请求对应的Request ID。
            }, 
        "userIdentity": {
            "principalId": "" //请求发起者的UID。
            }, 
        "xVars": {  //OSS的回调功能(Callback)中的自定义参数。
            "x:callback-var1":"value1",
            "x:vallback-var2":"value2"
            }
        }        
     }
  ]
}
消息通知示例:
{"events": [
      {
        "eventName": "ObjectDownloaded:GetObject",
        "eventSource": "acs:oss",
        "eventTime": "2016-07-01T11:17:30.000Z",
        "eventVersion": "1.0",
        "oss": {
            "bucket": {
                "arn": "acs:oss:cn-shenzhen:114895646818****:event-notification-test-shenzhen",
                "name": "event-notification-test-shenzhen",
                "ownerIdentity": "114895646818****"},
            "object": {
                "deltaSize": 0,
                "eTag": "0CC175B9C0F1B6468E1199E269772661",
                "key": "test",
                "readFrom": 0,
                "readTo": 1,
                "size": 1
            },
        "ossSchemaVersion": "1.0",
        "ruleId": "GetObjectRule",
        "region": "cn-shenzhen",
        "requestParameters": {
            "sourceIPAddress": "198.51.100.1"
            },
        "responseElements": {
            "requestId": "5FF16B65F05BC932307A3C3C"
            },
        "userIdentity": {
            "principalId": "114895646818****"
            },
        "xVars": {
            "x:callback-var1":"value1",
            "x:vallback-var2":"value2"
            }
        }        
     }
  ]
}

常见问题

  • 问题描述:某个Bucket的事件通知规则中配置了DeleteObject以及DeleteObjects事件类型,但是当该Bucket出现Object删除行为时,并未触发事件通知。
  • 问题原因:该Bucket开启了版本控制并且执行了未指定版本ID的Object删除操作。未指定版本ID的Object删除行为默认不会删除任意版本Object,而是将当前版本Object转为历史版本Object,并添加删除标记。因此,该场景下并不会触发DeleteObject或者DeleteObjects事件通知。

更多参考

  • 开启事件通知

    您只需在OSS管理控制台进行简单的配置即可开启事件通知功能。配置步骤,请参见设置事件通知规则

  • 事件通知结合消息服务

    您可以在事件通知规则中自定义您关注的Object,当这些Object发生指定事件时,您可以通过消息服务指定的接收终端,及时收到Object的事件通知。配置步骤,请参见结合消息服务实现OSS事件通知的教程示例