2017-09-05 214 views
0

是否可以在azure管道中調用cosmos db觸發器?流水線只是將數據從azrue存儲複製到cosmos db集合,並且需要調用預觸發。如何爲複製活動指定觸發器ID?Azure cosmos db觸發器

+0

您在使用Azure的功能呢?你能描述一下你正在使用或計劃建設什麼樣的事件嗎?當你說Azure Storage時,你的意思是Blobs?隊列?表? –

+0

@MatiasQuaranta,談到Azure存儲我的意思是Blobs。我的管道只是將數據集形式blob複製到cosmos db。我知道如何調用觸發器,例如Node.js documentdb client api。但我應該這樣做。 –

+0

因此,如果我理解正確,當Blob上傳到Azure存儲時,您想要將數據保存到Cosmos數據庫中?您要存儲的信息是Blob或其某些屬性的內容? –

回答

0

根據您的說法,您可以通過使用帶有Blob TriggerDocumentDB output binding的Azure函數來解決此問題。

類似一個functions.json到:

{ 
    "disabled": false, 
    "bindings": [ 
     { 
      "name": "myBlob", 
      "type": "blobTrigger", 
      "direction": "in", 
      "path": "<name-of-the-folder-where-files-get-uploaded>", 
      "connection":"MyStorageAccount" 
     }, 
     { 
      "name": "documentToSave", 
      "type": "documentDB", 
      "databaseName": "MyDatabase", 
      "collectionName": "MyCollection", 
      "createIfNotExists": true, 
      "connection": "MyAccount_COSMOSDB",  
      "direction": "out" 
     } 
    ] 
} 

和函數體可以是這樣的:

// Blob trigger binding to a CloudBlockBlob 
#r "Microsoft.WindowsAzure.Storage" 

using Microsoft.WindowsAzure.Storage.Blob; 

public static void Run(CloudBlockBlob myBlob, out object documentToSave, TraceWriter log) 
{ 
    // some logic to read the blob and parse it 

    documentToSave = new { 
     id = "some value", 
     .. other properties here 
     }; 
} 
+0

感謝您的明確解釋。但是我應該在複製管道啓動時調用cosmos db pre-trigger。在每一個複製我應該檢查blob文件是否存在它cdb集合,如果真正取代它。這是cdb預觸發業務邏輯。 Blob觸發器不能解決我的問題。 –

+0

無論何時修改/上傳文檔,Blob觸發器都會觸發。 DocumentDB輸出綁定將保存或更新文檔。您必須確保文檔的id屬性設置正確(可能與文檔本身相關,如名稱)。 –

+0

我試圖將已有的json複製到cosmos db集合時出錯。我希望使用上述的cosmos db預觸發來解決這個問題。 –

相關問題