使用Logic Apps從Azure Blob存儲中刪除超過X天的文件


假定我們有某個應用程序會將文件存儲到Azure Blob中,存儲在Blob中的數據保存七天,七天以後需要對其進行刪除。這需求可以使用Azure PowerShell Runbook來完成,但是我想看看是否可以用很少甚至沒有代碼來完成。經過一番探索我發現Azure Logic App非常適合這種情況。你可以用Logic App創建一些強大的東西。因此,在本文中,我將向各位展示如何在使用Logic App刪除Blob中超過X天的文件。

至於Logic App如何創建,在此我就不做過多的說明了,各位如果有興趣可以參考我之前的Blog。當我們創建好Logic App以後打開新的邏輯應用程序。我們應該會看到“邏輯應用程序設計器”,點擊“邏輯應用程序設計器”—“ Blank Logic App”:

clip_image002

在搜索連接器和觸發器框中搜索“Recurrence”,單擊“Recurrence”觸發器:

clip_image004

將間隔設置爲您希望邏輯應用程序每隔幾天運行一次。在此我選擇每天都運行,然後單擊“顯示高級選項”。在這裏選擇我們希望邏輯應用程序運行的時區和時間。我選擇了UTC+8和midnight。完成後單擊下一步。

clip_image006

在搜索連接器和觸發器框中搜索“blob”,單擊“List blobs”觸發器:

clip_image008

輸入連接名。我們會看到一個存儲帳戶列表,單擊要清理的存儲帳戶。然後點擊創建,現在要求我們指定Container。單擊文件夾圖標,然後選擇要清理的Container:

clip_image010

在搜索連接器和觸發器框中搜索“Filte”,單擊“Filter array”觸發器:

clip_image012

選擇list blobs下的Value:

clip_image014

單擊“ 在高級模式下編輯”,然後鍵入以下內容以清除超過7天的文件。然後單擊下一步:

@less(item()?['LastModified'], addDays(utcNow(), -7))

clip_image015

在搜索連接器和觸發器框中搜索“For each”,單擊“For each”觸發器:

clip_image016

選擇Filter array下的“Body”:

clip_image018

單擊“ 添加操作”。

clip_image019

搜索“Delete blob”,點擊“Delete Blob”:

clip_image020

選擇“Path”:

clip_image022

到此我們的logic app就已經設計完成,點擊保存即可:

clip_image024

讓我們測試一下Logic App,確保它能夠正常攻錯。正如您在我的Blob存儲中看到的,我有一些文件,它們有不同的修改日期,很大一部分是超過7天的。

clip_image026

對於剛剛創建的Logic app我們如果想要立即運行只需要點擊“Run Trigger”就可以了:

clip_image028

點擊運行以後可以在下方看到運行記錄:

clip_image030

運行完成後我們返回blob可以看到在7天前創建的文件均已被刪除:

clip_image032

這種清理Blob存儲中文件的方法非常簡單,並且不需要像使用Azure自動化Runbook那樣需要任何特殊的Azure RunAs帳戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章