事件通知
对象存储OSS支持事件通知功能,您可以通过配置事件通知,及时了解您的OSS资源上的相关操作。
您可以在创建事件通知规则的时候,自定义您关注的Object信息,当这些资源发生变化后,您可以第一时间收到通知。例如:
- 有新数据从图片内容分享平台、音视频平台上传到OSS。
- OSS上的相关内容发生了更新。
- OSS上的重要文件被删除。
- OSS上数据同步已经完成。
注意
- 通过RTMP推流方式生成的ts和m3u8文件不会触发事件通知。
- 除华南2(河源)外,其他地域均支持事件通知功能。
OSS事件通知是异步进行的,不影响正常的OSS操作。事件通知的配置包括规则和消息通知两部分。
- 规则:用来描述什么情况下需要OSS进行消息通知。
- 消息通知:基于阿里云消息服务MNS实现,提供多种通知方式。
OSS事件通知整体架构如下图:
操作方式
配置事件通知功能请参见配置事件通知。
事件类型列表
事件类型 | 含义 |
---|---|
ObjectCreated:PutObject | 创建/覆盖文件:简单上传 |
ObjectCreated:PostObject | 创建/覆盖文件:表单上传 |
ObjectCreated:CopyObject | 创建/覆盖文件:拷贝文件 |
ObjectCreated:InitiateMultipartUpload | 创建/覆盖文件:初始化一个分片上传任务 |
ObjectCreated:UploadPart | 创建/覆盖文件:上传分片 |
ObjectCreated:UploadPartCopy | 创建/覆盖文件:从一个已存在的文件中拷贝数据来上传一个分片 |
ObjectCreated:CompleteMultipartUpload | 创建/覆盖文件:完成分片上传 |
ObjectCreated:AppendObject | 创建/覆盖文件:追加上传 |
ObjectDownloaded:GetObject | 下载文件:简单下载 |
ObjectRemoved:DeleteObject | 删除文件:一个 |
ObjectRemoved:DeleteObjects | 删除文件:多个 |
ObjectReplication:ObjectCreated | 同步文件:已生成 |
ObjectReplication:ObjectRemoved | 同步文件:已删除 |
ObjectReplication:ObjectModified | 同步文件:已修改 |
事件通知消息格式
OSS的事件通知消息内容是经过Base64编码的,解码后是JSON格式,具体内容如下:
{"events": [{
"eventName": "", //事件通知类型
"eventSource": "", //消息源,固定为"acs:oss"
"eventTime": "", //事件时间,格式为ISO-8601
"eventVersion": "", //版本号,目前为"1.0"
"oss": {
"bucket": {
"arn": "", //bucket的唯一标识符,格式为"acs:oss:region:uid:bucket"
"name": "", //bucket名称
"ownerIdentity": ""}, //bucket的owner
"object": {
"deltaSize": , //object大小的变化量,比如新增一个文件,这个值就是文件大小,如果是覆盖一个文件,这个值就是新文件与旧文件的差值,因此可能为负数
"eTag": "", //object的etag,与GetObject()请求返回的ETag头的内容相同
"key": "", //object名称
"position":, //可变项,只有在ObjectCreated:AppendObject事件中才有,表示此次请求开始append的位置,注意是从0开始
"readFrom": , //可变项,只有在ObjectDownloaded:GetObject事件中才有,表示文件开始读取的位置,如果不是Range请求,则此项为0,否则则是Range请求的开始字节,注意是从0开始
"readTo": , //可变项,只有在ObjectDownloaded:GetObject事件中才有,表示文件最后读取的位置,如果不是Range请求,则此项为文件的大小,否则则是Range请求的结束字节增1
"size": }, //object大小
"ossSchemaVersion": "", //此字段域的版本号,目前为"1.0"
"ruleId": "GetObject"}, //此事件匹配的规则ID
"region": "", //bucket所在的region
"requestParameters": {
"sourceIPAddress": ""}, //请求的源IP
"responseElements": {
"requestId": ""}, //请求对应的requestid
"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:11489********46818:event-notification-test-shenzhen",
"name": "event-notification-test-shenzhen",
"ownerIdentity": "11489********46818"},
"object": {
"deltaSize": 0,
"eTag": "0CC175B9C0F1B6xxxxxx99E269772661",
"key": "test",
"readFrom": 0,
"readTo": 1,
"size": 1},
"ossSchemaVersion": "1.0",
"ruleId": "GetObjectRule"},
"region": "cn-shenzhen",
"requestParameters": {
"sourceIPAddress": "140.xx.xx.90"},
"responseElements": {
"requestId": "5776514Axxxxxxx542425D2B"},
"userIdentity": {
"principalId": "11489********46818"},
"xVars": {
"x:callback-var1":"value1",
"x:vallback-var2":"value2"}}]}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论