В этой статье:
Настройка удаления файлов по расписанию в MinIO
При использовании локального файлового хранилища MinIO настройте удаление файлов по расписанию для увеличения свободного объёма памяти. Например, при расширенном логировании событий со статусом «Дебаг» в MinIO сохраняются JSON-файлы с ответами, которые были получены при выполнении запросов к источникам данных, и хранятся в отдельном разделе debug-logs-storage по пути debug_logs/<наименование среды>/<наименование проекта>/<наименование ресурса>.
Используемые разделы MinIO в каталоге «Buckets»:
backups. Предназначен для хранения резервных копий баз данных PostgreSQL при использовании кластерной конфигурации продукта «Форсайт. Мобильная платформа»;
debug-logs-storage. Предназначен для хранения JSON-файлов с ответами от источника данных, базы данных или сервера мобильной платформы при ведении расширенного логирования запросов к источникам данных;
django-local-storage. Предназначен для хранения файлов, загруженных в локальное хранилище каждого проекта;
media. Предназначен для хранения дистрибутивов приложений и сертификатов серверов источников данных.
Настройка удаления файлов из хранилища MinIO по расписанию осуществляется в веб-интерфейсе MinIO или через терминал.
Для настройки удаления файлов по расписанию откройте приложение MinIO по адресу:
http://<IP-адрес или DNS-имя сервера>:9001
После выполнения действия будет открыто приложение MinIO. Перейдите в раздел «Administrator > Buckets» на боковой панели:

В каталоге «Buckets» содержатся разделы MinIO: backups, debug-logs-storage, django-local-storage, media.
Для создания расписания, по которому будут автоматически удаляться файлы из хранилища:
Откройте раздел MinIO. Рассмотрим создание расписания на примере раздела debug-logs-storage:

Создайте правило, определяющее сроки хранения файлов, с помощью кнопки «Add Lifecycle Rule» в подразделе «Lifecycle». После нажатия кнопки будет открыто окно «Add Lifecycle Rule»:

Задайте срок хранения файлов в днях в параметре «After».
Нажмите кнопку «Save».
Повторите шаги для создания нескольких правил в разных разделах MinIO.
После выполнения действий будет создано расписание для удаления файлов из хранилища в соответствии с созданными правилами.
Для удаления правила, определяющего срок хранения файлов, из расписания:
Откройте раздел MinIO. Рассмотрим удаление правила на примере раздела debug-logs-storage:

Нажмите кнопку
«Remove», расположенную
напротив существующего правила.
После выполнения действий будет удалено правило из расписания.
Создание расписания и удаление правил через терминал приведено для одиночной конфигурации продукта «Форсайт. Мобильная платформа».
Для создания расписания, по которому будут автоматически удаляться файлы из хранилища:
Убедитесь, что контейнеры мобильной платформы запущены и работают корректно, а также проверьте наименование контейнера MinIO - fmp_minio_1:
% docker ps
Примечание. Наименование контейнера MinIO может отличаться при работе с различными версиями «Форсайт. Мобильная платформа».
Создайте правила, определяющие сроки хранения файлов:
% docker exec -ti <наименование контейнера MinIO> mc ilm rule add --expire-days <количество дней> <путь до раздела MinIO>
В подстановках:
<наименование контейнера MinIO>. Укажите наименование контейнера MinIO;
<количество дней>. Задайте срок хранения файлов в днях. По истечении заданного времени файлы будут удалены;
<путь до раздела MinIO>. Укажите путь до раздела MinIO в каталоге «Buckets»: backups, debug-logs-storage, django-local-storage, media.
Пример команды:
% docker exec -ti fmp_minio_1 mc ilm rule add --expire-days 1 local/debug-logs-storage
После выполнения команды будет создано правило, по которому будут удалены файлы в разделе debug-logs-storage через один день после их загрузки в хранилище.
При успешном создании правила выводится сообщение:
Lifecycle configuration rule added with ID `<идентификатор созданного правила>` to <путь до раздела MinIO>.
Например:
Lifecycle configuration rule added with ID `d13uj9nu7g4s6pmtdk30` to local/debug-logs-storage.
При необходимости создайте несколько правил для разных разделов MinIO.
Получите список существующих правил и убедитесь, что новые правила созданы:
% docker exec -ti <наименование контейнера MinIO> mc ilm rule ls <путь до раздела MinIO>
Пример команды:
% docker exec -ti fmp_minio_1 mc ilm rule ls local/debug-logs-storage
После выполнения команды будет отображена таблица, в которой содержатся существующие правила для указанного раздела MinIO:
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ Expiration for latest version (Expiration) │
├──────────────────────┬─────────┬────────┬──────┬────────────────┬─────────────────────┤
│ ID │
STATUS │ PREFIX │ TAGS │ DAYS TO EXPIRE │ EXPIRE DELETEMARKER
│
├──────────────────────┼─────────┼────────┼──────┼────────────────┼─────────────────────┤
│ d13uj9nu7g4s6pmtdk30 │ Enabled │ - │
- │ 1
│ false │
└──────────────────────┴─────────┴────────┴──────┴────────────────┴─────────────────────┘
После выполнения действий будет создано расписание для удаления файлов из хранилища в соответствии с созданными правилами.
Для удаления правила, определяющего срок хранения файлов, из расписания:
Убедитесь, что контейнеры мобильной платформы запущены и работают корректно, а также проверьте наименование контейнера MinIO - fmp_minio_1:
% docker ps
Примечание. Наименование контейнера MinIO может отличаться при работе с различными версиями «Форсайт. Мобильная платформа».
Определите идентификатор правила, которое необходимо удалить:
Получите список существующих правил:
% docker exec -ti <наименование контейнера MinIO> mc ilm rule ls <путь до раздела MinIO>
В подстановках:
<наименование контейнера MinIO>. Укажите наименование контейнера MinIO;
<путь до раздела MinIO>. Укажите путь до раздела MinIO в каталоге «Buckets»: backups, debug-logs-storage, django-local-storage, media.
Пример команды:
% docker exec -ti fmp_minio_1 mc ilm rule ls local/debug-logs-storage
После выполнения команды будет отображена таблица, в которой содержатся существующие правила для указанного раздела MinIO:
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ Expiration for latest version (Expiration) │
├──────────────────────┬─────────┬────────┬──────┬────────────────┬─────────────────────┤
│ ID │
STATUS │ PREFIX │ TAGS │ DAYS TO EXPIRE │ EXPIRE DELETEMARKER
│
├──────────────────────┼─────────┼────────┼──────┼────────────────┼─────────────────────┤
│ d13uj9nu7g4s6pmtdk30 │ Enabled │ - │
- │ 1
│ false │
└──────────────────────┴─────────┴────────┴──────┴────────────────┴─────────────────────┘
Скопируйте идентификатор правила, содержащийся в столбце «ID» полученной таблицы.
Удалите правило по идентификатору:
% docker exec -ti <наименование контейнера MinIO> mc ilm rule rm --id "<идентификатор правила>" <путь до раздела MinIO>
Пример команды:
% docker exec -ti fmp_minio_1 mc ilm rule rm --id "d13uj9nu7g4s6pmtdk30" local/debug-logs-storage
При успешном удалении правила выводится сообщение:
Rule ID `<идентификатор правила>` from target <путь до раздела MinIO> removed.
Например:
Rule ID `d13uj9nu7g4s6pmtdk30` from target local/debug-logs-storage removed.
При необходимости удалите несколько правил для разных разделов MinIO.
Получите список существующих правил аналогично шагу 2а и убедитесь, что правило удалено:
% docker exec -ti <наименование контейнера MinIO> mc ilm rule ls <путь до раздела MinIO>
При удалении правила в полученной таблице не должна содержаться запись с идентификатором удалённого правила. Если удалены все существовавшие правила, то при выполнении команды вместо таблицы будет выведено сообщение:
mc: <ERROR> Unable to get lifecycle. The lifecycle configuration does not exist.
После выполнения действий будет удалено правило из расписания.
См. также: