2017-03-08 14 views
3

Ich habe Nifi Flow, der alle Dateien aus S3 löschen soll, die älter als 7 Tage sind. Ich habe das folgende Setup verwendet, um es zu erledigen.Nifi: Löschen von Dateien aus S3, wenn sie X Tage alt sind

Mein UpdateAttribute Prozessor verfügt über ein epoch_now Attribut, das aktuelle Epochzeit erhält.

Auf meinem RouteOnAttribute Ich habe die folgende Logik Dateien zu filtern, die jünger als 7 Tage mit diesem Ausdruck: ${epoch_now:minus(${s3.lastModified}):ge(604800000)}

Das Problem ist, dass ListS3 Prozessorzustand aufrechterhalten wird, und es wird nicht wieder Liste all Dateien das nächste Mal, um zu berechnen, ob irgendwelche Dateien ablaufen und gelöscht werden müssen. Ich schaute mich um, aber ich konnte etwas wie Get* Prozessor nicht finden, der Zustand beibehalten würde. Wie behebe ich diesen Fluss, so dass er regelmäßig ausgeführt wird und Dateien, die 7 Tage alt sind, weiterhin löscht?

enter image description here

Antwort

3

Sie sind richtig, nicht Nifi derzeit nicht über einen Prozessor verfügt S3 auf diese Weise abgefragt werden.

Dies könnte eine bessere passen für eine S3 Lifecycle Rule. Sie können eine Regel für bestimmte Schlüsselpräfixe konfigurieren, sodass S3 Objekte automatisch nach 7 Tagen löscht. Von der S3-Konsole:

  • Wählen Sie ein Eimer
  • Wählen Sie Eigenschaften
  • den Abschnitt Lifecycle erweitern
  • Click Regel hinzufügen

Es gibt eine Assistenten-ähnliche Schnittstelle ist man durch die zu Fuß Aufbau.

+0

Ich landete tatsächlich eine lokale Kopie der Dateien und verwendet 'GetFile' Prozessor, um immer zu beobachten, dass lokale dir und wenn eine Datei mehr als 7 Tage alt ist, löschen Sie sie aus lokalen, route die' $ {filename} ' zu 'DeleteS3Object' und lösche auch von S3. – summerNight

Verwandte Themen