PostEvent
更新时间:2025-05-26
接口描述
将事件消息推送到用户配置的回调url上。回调是发送POST请求,用户的回调服务器需要支持POST请求、
如果规则中配置了encryption字段,那么请求中会包含Authorization
的签名,保证消息不会被伪造或篡改。签名是可选的。
注意:
Status Code: 200 OK
才会认为消息推送成功,否则将会重试;- 对于过载保护的情况,支持
Status Code: 429 Too Many Requests
返回值,会间隔一段时间再重试;
请求
-
请求语法
Plain Text1http 2POST /?event HTTP/1.1 3Host: <User_Host> 4Date: <Date> 5Content-Type: application/json; charset=utf-8 6Content-Length: <Content_Length> 7Authorization: <AuthorizationString>
-
请求头域
无
-
请求参数
字段 | 类型 | 说明 |
---|---|---|
version | String | 事件版本,当前为1.0 |
eventFrom | String | 触发事件的请求来源,表示请求来源于用户、BOS生命周期、BOS数据同步、BOS批处理。 有效值: Client/Lifycycle/Replication/Batch。 默认是"Client",如果没有设置此字段则表示取值是默认值。 |
eventId | String | 事件唯一标识 |
eventOrigin | String | 事件触发源,当前支持增量(bos:realtime ) |
eventType | String | 事件类型 |
eventTime | String | 事件发生时间(GMT格式) |
configurationId | String | 事件对应的事件通知规则id。 |
content | Object | 事件具体信息 |
+domain | String | 所属的domain |
+bucket | String | 所属的bucket |
+object | String | object名字 |
+eTag | String | object的eTag,如果object可能被覆盖,则需要用eTag判断是哪个版本的object触发的事件 |
+contentType | String | object的Content-Type |
+copySourceBucket | string | 如果是CopyObject 事件或BosLifecycle:Copy 事件,表示源object所在bucket名称。 |
+copySourceObject | string | 如果是CopyObject 事件或者BosLifecycle:Copy 事件,表示源Object名称。 |
+copySourceStorageClass | string | 如果是CopyObject 事件或者BosLifecycle:Copy 事件,表示源object的存储类型。 |
+storageClass | string | 触发事件的object的存储类型。 |
+filesize | Number | 文件大小 |
+lastModified | String | 文件更新时间 |
+credentials | Object | 相关资源的临时授权,具体使用参考临时授权访问 |
++accessKeyId | String | 临时授权的Access Key ID |
++secretAccessKey | String | 临时授权的Secret Access Key |
++sessionToken | String | 临时授权的Session Token |
++expiration | String | 临时授权的的有效时间 |
+xVars | String | 用户设置通知中的xVars原文 |
响应
回调签名(可选)
用户设置事件通知规则且触发通知规则之后,BOS服务端将会按照用户设置的回调URL发送POST回调请求给用户的应用服务器。应用服务器收到回调请求之后,如果希望验证回调请求确实是由BOS发起的话,可以通过在回调中带上签名来验证BOS的身份。
回调签名使用百度智能云的IAM签名算法来实现,具体可参考IAM签名算法。
签名过程分为三步:
(1)提前创建事件通知规则,并在规则中设置密钥"encryption"。用户可以通过控制台或者sdk创建。
例如创建事件通知规则的id为"callback1",其中key为用户设置密钥,长度为32字符,可取值为数字[0-9]和小写英文字母。
Plain Text
1PUT /?notification HTTP/1.1
2Host: <BucketName>.bj.bcebos.com
3Date: Wed, 12 Sep 2018 06:34:40 GMT
4Authorization: <AthorizationString>
5Content-Type: application/json; charset=utf-8
6Content-Length: 0
7{
8 "notifications": [
9 {
10 "id": "callback1",
11 "name": "rule-name",
12 "appId": "app-id-1",
13 "status": "enabled",
14 "encryption": {
15 "key": "06a62b70f47dc4a0a7da349609f1a1ac",
16 },
17 "resources": [
18 "bucket-a/path1/*", "/path2/*.jpg"
19 ],
20 "events": [
21 "PutObject"
22 ],
23 "apps": [
24 {
25 "id": "app-id-1",
26 "eventUrl": "http://xxx.com/event",
27 "xVars": "<User-Define-Raw-Msg>"
28 }
29 ]
30 }
31 ]
32}
(2)用户发起bos请求,并且命中事件通知规则。
(3)BOS服务端向用户的应用服务器发起带签名的回调。其中计算签名的AK为用户本次请求的AK(如果没有带签名,默认使用"-"),SK为用户在第一步中设置的密钥。生成的签名位于请求头"Authorization"中。
示例
-
请求示例
Plain Text1``` 2POST /<callback_url> HTTP/1.1 3Host: <User_Host> 4Date: Wed, 12 Sep 2018 06:34:40 GMT 5Authorization: <AthorizationString> 6Content-Type: application/json; charset=utf-8 7Content-Length: 0 8 9{ 10 "events": [ 11 { 12 "version": "1.0", 13 "eventFrom": "Client", 14 "eventId": "2a513199-bbb9-4ac7-b12a-60213c26810d", 15 "eventOrigin": "bos:realtime", 16 "eventTime": "2018-09-05T02:28:49Z", 17 "eventType": "CopyObject", 18 "configurationId": "notify-id-1", 19 "content": { 20 "userId": "c7ac82ae14ef42d1a4ffa3b2ececa17f", 21 "domain": "bj.bcebos.com", 22 "bucket": "bucket-test", 23 "object": "images/test.jpg", 24 "eTag": "977b9623a15e520c663ac5ff6647e881", 25 "contentType": "application/octet-stream", 26 "copySourceBucket": "src-bucket", 27 "copySourceObject": "src-object", 28 "copySourceStorageClass": "STANDARD", 29 "storageClass": "COLD", 30 "filesize": 24414, 31 "lastModified": "2018-09-05T02:28:49Z", 32 "credentials": { 33 "accessKeyId": "f3ade7c6b1a911e8bb6821a724cc157d", 34 "secretAccessKey": "07381a56d35e4b1193a418362221de81", 35 "sessionToken": "ZGZiM2M3MmU4Mjk4NGQ2MGEzYTNhYTAyMDE3NTZmZmV8AAAAAIcCAADaE18IR6jSaVWlMHxZG5wzb/7AQas3Y6V", 36 "expiration": "2018-02-22T11:22:33Z" 37 }, 38 "xVars": "<User-Define-Raw-Msg>" 39 } 40 } 41 ] 42} 43```
-
响应示例
Plain Text1HTTP /1.1 200 OK 2x-bce-request-id: 4db2b34d-654d-4d8a-b49b-xxxxxx786409 3Date: Wed, 12 Sep 2018 06:34:40 GMT 4Content-Length: 0 5Connection: close 6Server: BceBos