在使用Azure Functions Blob Trigger 時,會出現container裡已經存在的blob會觸發functions執行,但我們想隻針對新上傳的檔案進行觸發。
原因:
Azure Functions Blob trigger是通過blob 回執判斷某個blob是否已經執行過觸發,blob回執記錄在AzureWebJobsStorage這個storage account中,
該storage account 配置在local.setting.json中:
觸發後,會在雲端Storage Account中的azure-webjobs-hosts中看到如下圖的回執記錄:
因為回執記錄裡不包含之前存在的檔案,故而會依次觸發已經存在的檔案,直到全部觸發一遍。
針對此問題,可以使用 事件網格觸發器 代替 blob 觸發器,
參考文檔:
https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=csharp#blob-receipts
https://docs.microsoft.com/zh-cn/azure/event-grid/resize-images-on-storage-blob-upload-event?tabs=dotnet
操作示範如下:
重點圖文步驟:
建立Azure Functions Event Grid Trigger;
釋出到雲端;
在Functions內建頁面添加事件訂閱;
選擇Storage Account 作為Topic Type,然後選擇要監控的Storage Account:
可以選擇多個事件類型:
終結點是要将事件發送給誰,這裡預設選擇好了我們剛建立的Functions,直接點選儲存即可。
上傳blob 觀察Functions 日志;
在監控日志的data中能看到blob相關資訊,此時解析data的值,就可以拿到具體哪個blob上傳了,然後就可以對該blob進行操作了。
聲明:
點選可查閱本站文章目錄 《文章分類目錄》
本站所有内容僅代表個人觀點,如與官文檔沖突,請以官方文檔為準。
可在本頁面下方留言或通過下方聯系方式聯系我:
微信:wxyusz;郵箱:[email protected]
歡迎關注公衆号“雲計算實戰”,接收最新文章推送。
本作品由Sean Yu 采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。
歡迎轉載、使用、重新釋出,但務必保留文章連結:https://www.51azure.cloud,且不得用于商業目的。