Tengo un flujo de Nifi que se supone que elimina cualquier archivo de S3 que tenga más de 7 días. He usado la siguiente configuración para hacerlo.
Mi procesador UpdateAttribute tiene un atributo epoch_now que obtiene la hora actual.
En mi RouteOnAttribute tengo la siguiente lógica para filtrar los archivos que tienen menos de 7 días usando esta expresión: ${epoch_now:minus(${s3.lastModified}):ge(604800000)}
El problema es que el procesador ListS3 mantendrá el estado y no volverá a enumerar todos los archivos la próxima vez para calcular si algún archivo está por vencer y debe eliminarse. Miré a mi alrededor pero no pude encontrar algo como el procesador Get* que no mantuviera el estado. ¿Cómo soluciono este flujo para que se ejecute periódicamente y siga eliminando archivos que tienen 7 días de antigüedad?
Tiene razón, NiFi actualmente no tiene un procesador para consultar S3 de esa manera.
Esto podría ser más adecuado para una regla de ciclo de vida de S3 . Puede configurar una regla para prefijos de clave específicos, por lo que S3 eliminará automáticamente los objetos después de 7 días. Desde la consola S3:
Hay una interfaz de estilo asistente para guiarlo a través de la configuración.