2017-03-08 91 views
3

我有Nifi流應該從S3刪除任何文件超過7天。我已經使用下面的設置來完成它。Nifi:從S3中刪除文件時,他們是X天

我的UpdateAttribute處理器具有epoch_now屬性,該屬性獲取當前的歷元時間。

在我RouteOnAttribute我有以下邏輯來過濾掉那些年輕的7天使用該表達式的文件:${epoch_now:minus(${s3.lastModified}):ge(604800000)}

問題是ListS3處理器將保持狀態,並不會重新列表中的所有文件下次計算是否有文件過期並需要刪除。我環顧四周,但我找不到像Get*處理器那樣不能保持狀態的東西。我如何修復這個流程,以便它能夠定期運行並不斷刪除7天前的文件?

enter image description here

回答

3

你是正確的,NiFi目前還沒有一個處理器來查詢S3的方式。

這可能更適合S3 Lifecycle Rule。您可以爲特定的密鑰前綴配置規則,因此S3會在7天后自動刪除對象。從S3控制檯:

  • 選擇你的水桶
  • 選擇屬性
  • 展開生命週期部分
  • 單擊添加規則

有一個嚮導式界面來引導您完成組態。

+0

我實際上最終保留了文件的本地副本,並且使用'GetFile'處理器總是監視本地目錄,如果任何文件超過7天,請從本地刪除它們,路由'$ {filename}'到'DeleteS3Object'並從S3中刪除。 – summerNight

相關問題