685
魔獸
事件通知__開發人員指南_消息服務-阿裏雲
MNS 推出重磅功能,支持阿裏雲各大服務通過MNS實現事件通知(回調)。用戶可以通過在MNS上創建事件通知的規則,來關注其他阿裏雲產品指定資源上產生的事件,並且由MNS以消息的方式主動推送到指定的接收端。
- 事件通知按區域提供服務
- 事件通知為異步通知,不會影響用戶使用其他雲產品的體驗
- 事件通知消息在有效時間內不會丟失,當用戶接收消息失敗時,會按照指定的重試策略重試
- 事件通知消息的接收端目前支持HttpServer和Queue(可以將消息轉移到Queue中,由用戶來主動消費)
- 事件通知中消息推送的相關介紹請參考主題模型
注意事項
- 事件通知規則創建完,約10分鍾後生效
- 在沒有其他規則的情況下,默認規則匹配所有資源上的所有事件
- 在有其他規則並且也有默認規則的情況下,不匹配其他規則的事件會匹配默認規則
- 事件通知規則隻能創建和刪除,目前不支持更新
作用
- 如果您授權其他人可以對您的資源(Bucket)進行某些操作,而您又希望關注這些操作的話,您就可以創建對應的規則,使得這些操作發生時,能夠主動通知到您。
- 如果您需要對操作進行統計的話,也可以通過事件通知的方式進行數據分析,查看一段時間內某個操作發生的次數,據此來分析您的業務最近有什麼樣的發展趨勢。並且,您也可以將這些事件通知的消息繼續導入其他服務(比如:EMR,進一步進行您自定義的分析)
- 您也可以通過事件通知監控您的資源上發生的某些操作的QPS等等指標。
OSS事件通知
OSS 支持將相關操作產生的事件通知到指定的接收端。其中:
- 失敗的操作目前不會觸發事件通知
- 同步產生的操作不會觸發事件通知
- Lifecycle產生的操作會觸發事件通知
- 鏡像回寫會觸發兩個事件:ObjectDownloaded:GetObject(由於文件還未拉取,因此etag等信息為空)和ObjectCreated:PutObject。
- OSS 事件通知還支持用戶自定義參數,會在消息中將用戶的合法自定義參數放在xVars字段中(自定義參數方法與 OSS 的 Callback 保持一致,可參考:這裏)。
1. OSS請求返回值
在請求 OSS 進行相關操作時,事件通知不會影響原定接口的返回值,是通過在返回的Response中增加Header來描述觸發事件通知的結果的。如果沒有匹配事件通知的規則,則不會增加Header;如果匹配到了,不管事件通知是否觸發成功,都會增加這個Header。Header格式如下:
- key: x-oss-process-status
- value:經過Base64編碼,解碼後為:
{
"code": "Success", //此次觸發事件通知的結果,如果成功,則為Success,否則為Fail,需要注意的是,Success隻表示oss將消息發送到了topic中,並不代表topic將消息推送到了endpoint那裏
"message": "NotificationSucceed", //此次操作的詳細描述,如果失敗,此處會說明失敗的原因
"type": "EventNotification", //操作類型,事件通知統一為"EventNotification",判斷的時候需要先判斷此類型
"version": "1.0"} //版本號
示例:
x-oss-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F0aW9
2. 舉例說明如何使用OSS事件通知
某個用戶創建了一個Bucket:event-notification-test,然後他關心有哪些Object被上傳到這個Bucket中了,於是他就可以創建下麵這樣的事件通知規則:
- 規則名稱:event-notification-test-rule
- 資源描述:event-notification-test/
- 事件類型:PutObject、PostObject
- 接收終端:event-notification-test-queue
以此為例,五步玩轉OSS事件通知,請參考:這裏
默認規則
如果用戶簡單的想關注自己所有Bucket上產生的所有事件,可以簡單的創建一條默認規則就可以了,即,默認事件通知,請參考:這裏
注意:
- 如果僅有默認規則,則默認規則會匹配所有Bucket上產生的所有事件,但一旦創建了其他規則後,默認規則的語義就變成了:不匹配其他規則的情況下產生的事件通知才會匹配默認規則
3. OSS事件類型
OSS支持的事件類型包括:
注:請求失敗時,目前是不會觸發事件通知的。
事件名稱 | 說明 |
---|---|
ObjectCreated:PutObject | |
ObjectCreated:PostObject | |
ObjectCreated:CopyObject | |
ObjectCreated:InitiateMultipartUpload | |
ObjectCreated:UploadPart | |
ObjectCreated:UploadPartCopy | |
ObjectCreated:CompleteMultipartUpload | |
ObjectCreate:AppendObject | |
ObjectDownload:GetObject | |
ObjectRemove:DeleteObject | |
ObjectRemove:DeleteObjects | |
ObjectRemoved:AbortMultipartUpload |
4. OSS事件通知消息格式
- 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:1148930107246818:event-notification-test-shenzhen",
"name": "event-notification-test-shenzhen",
"ownerIdentity": "1148930107246818"},
"object": {
"deltaSize": 0,
"eTag": "0CC175B9C0F1B6A831C399E269772661",
"key": "test",
"readFrom": 0,
"readTo": 1,
"size": 1},
"ossSchemaVersion": "1.0",
"ruleId": "GetObjectRule"},
"region": "cn-shenzhen",
"requestParameters": {
"sourceIPAddress": "140.205.128.90"},
"responseElements": {
"requestId": "5776514AF09A9E6542425D2B"},
"userIdentity": {
"principalId": "1148930107246818"},
"xVars": {
"x:callback-var1":"value1",
"x:vallback-var2":"value2"}}]}
最後更新:2016-11-23 16:04:14
上一篇:
主題操作__主題模型_開發人員指南_消息服務-阿裏雲
下一篇:
日誌管理__開發人員指南_消息服務-阿裏雲
步驟2:https網站接入__快速入門(網站業務)_DDoS 高防IP-阿裏雲
通過StreamCompute消費__loghub-消費_用戶指南_日誌服務-阿裏雲
短信簽名的要求是什麼?__常見問題_短信服務-阿裏雲
推送Android SDK打開App或指定Activity時如何獲取推送通知參數?__Android SDK常見問題_移動推送-阿裏雲
物理專線__產品使用手冊_高速通道-阿裏雲
Oracle數據源配置__數據源配置_數據同步手冊_用戶操作指南_大數據開發套件-阿裏雲
阿裏雲發布彈性高性能計算平台E-HPC 中國首款公共雲HPCaaS
LogicalOperator__DataType_API 參考_表格存儲-阿裏雲
動作列表__RAM子用戶訪問_API-Reference_日誌服務-阿裏雲
1. OCS快速開始__開放緩存OCS 體驗_體驗館-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲