2017-03-08 2 views
3

S3から7日以上経過したファイルを削除するはずのNifiフローがあります。私はそれを行うために、次のセットアップを使用しました。Nifi:X日前にS3からファイルを削除する

私の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

関連する問題