Автоматизированное архивирование файлов: настроил и забыл
Настройте автоматизированные процессы архивирования файлов. Задайте правила, планируйте архивирование и обеспечивайте соответствие политикам хранения.
Автоматизированное архивирование перемещает неактивные файлы из горячего хранилища на холодные уровни по расписанию — без чьего-либо участия. Правила S3 Lifecycle, Azure Blob Lifecycle Management и GCS Object Lifecycle позволяют задавать политики вида «через 90 дней без обращения переместить в Glacier Deep Archive; через 7 лет удалить, если не помечено legal-hold». Настройте их один раз, протестируйте на 1% объектов — и система сократит затраты на хранение на 50–80%, выполняя при этом требования по срокам: 7 лет по SOX, 6 лет по HIPAA, принцип минимизации данных по GDPR, а в российском контексте — требования 152-ФЗ к хранению персональных данных — без ручных обходов.
Выбор триггера: возраст, обращение или тег
Три типа триггеров архивирования используются чаще всего. Правила по возрасту (object.age > 90d) — простейший вариант, подходящий для данных с убывающей ценностью: логов, транзакций, экспортов почты. Правила по обращению (S3 Intelligent-Tiering, отслеживающий метки времени последнего доступа) умнее подходят для датасетов с непредсказуемым паттерном обращений — файл финансового аудита может быть неактивен 11 месяцев и стать критически важным на 12-й.
Правила по тегам (tag retention-class = sox-7y) дают пользователям и приложениям явный контроль. Команда compliance может помечать файлы retention-class: hipaa-6y при загрузке, и правила lifecycle будут архивировать их соответственно — без необходимости менять само правило при смене категорий. Комбинируйте: возраст — для общего случая, теги — для исключений.
Написание политики в YAML или JSON
Конфигурации S3 lifecycle используют XML или JSON; Azure — JSON; GCS — JSON. Пример правила S3 для репозитория документов:
{
"Rules": [
{
"ID": "archive-documents",
"Status": "Enabled",
"Filter": {"Prefix": "documents/"},
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER_IR"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555},
"NoncurrentVersionExpiration": {"NoncurrentDays": 180}
}
]
}
Храните политику под контролем версий в Git. Каждое изменение проходит ревью в pull request, применяется через Terraform или CloudFormation, фиксируется в логе CI. Политики, отредактированные вручную в консоли, расходятся с эталоном и ломаются.
Тестирование перед продакшеном
Политика lifecycle, удаляющая не тот бакет, — это конец карьеры. Сначала тестируйте на небольшом префиксе. Создайте documents/test/ с тестовыми файлами и отдельную тестовую политику, применимую только к этому префиксу. Используйте короткие сроки — Days: 1 — чтобы быстро пройти все переходы.
Проверяйте результаты командой aws s3api list-objects-v2 --prefix documents/test/ и убедитесь, что классы хранения изменились ожидаемым образом. Затем расширяйте фильтр. Для критически важных бакетов (юридические, финансовые) запустите политику в режиме пробного прогона, если провайдер его поддерживает, или симулируйте скриптом, который сообщает, что произошло бы без реального применения изменений.
Минимальные сроки хранения — не для обсуждения
Правила lifecycle уважают минимальные сроки оплаты хранения. Перемещение объекта в Glacier Flexible Retrieval и его удаление через 7 дней всё равно тарифицируется за 90 дней. Deep Archive — минимум 180 дней. Плохо спроектированное правило, переводящее объекты из Standard в Deep Archive и затем удаляющее их за 30 дней, тройной платёж: за переход, за минимальный срок и за исходящий трафик при восстановлении.
Безопасная схема: переходите на более холодный уровень только в том случае, если объект, по ожиданиям, проживёт там не меньше минимального срока. Если файлы обычно удаляются через 60 дней — не прогоняйте их через Deep Archive (минимум 180 дней). Остановитесь на Standard-IA.
Обработка юридических удержаний и исключений
В каждой системе архивирования нужен аварийный выход для судебных процессов. Тег legal-hold: true должен освобождать объекты от lifecycle-удаления. Реализуйте через фильтр правила, исключающий помеченные объекты:
Filter:
And:
Prefix: "documents/"
Tag: {Key: "legal-hold", Value: "false"}
В сочетании с S3 Object Lock в режиме Governance или Compliance объекты с тегом legal-hold становятся неизменяемыми до снятия удержания. Режим Compliance запрещает удаление даже от имени root — именно это требуют FINRA 4511, SEC 17a-4 и требования WORM по §164.316 HIPAA.
Автоматизация конвейера тегирования
Архивирование настолько хорошо, насколько хороши теги, которые им управляют. Автоматизируйте тегирование при загрузке: Lambda, запускаемая по S3 ObjectCreated, анализирует файл и присваивает теги content-type, department, retention-class. Для уже существующих неразмеченных данных запустите пакетное задание тегирования через S3 Batch Operations.
Источники значений тегов:
- Расширение файла и magic bytes (PDF со словом «HIPAA» в метаданных получает тег
healthcare) - Источник загрузки (API-ключ, привязанный к финансовому приложению, автоматически добавляет тег
finance) - Сканирование содержимого (Amazon Macie обнаруживает ПД и тегирует соответственно)
- Ввод пользователя при загрузке (форма с выпадающим списком
Отдел)
Тегирование в S3 стоит $0,01 за 10 000 запросов — это оправданная инвестиция для точного lifecycle-таргетинга.
Журнал аудита архивирования
Логируйте каждое действие lifecycle. CloudTrail фиксирует события LifecycleTransition и LifecycleExpiration. Направьте их в Athena, Splunk или Datadog для доступной к запросам истории. Когда аудитор спросит «когда контракт 2019 года был перемещён в Glacier», запрос должен вернуть ответ за секунды.
Включайте в журнал аудита:
- Ключ объекта и VersionId
- Переход из одного класса хранения в другой
- Триггер (возраст, тег, явный)
- Метка времени
- ID политики, которая сработала
Храните журнал аудита не меньше, чем требует срок хранения данных — если вы архивируете на 7 лет, храните журнал lifecycle 7 лет плюс буфер.
Архивирование в несколько регионов и облаков
Для аварийного восстановления архивы должны находиться во втором регионе или облаке. S3 Cross-Region Replication может реплицировать данные в другой класс хранения в регионе назначения — например, в us-west-2 сразу в Glacier Deep Archive. Azure поддерживает аналогичное через RA-GRS и репликацию объектов. GCS предлагает мультирегиональное хранилище и turbo replication.
Для межоблачного архивирования (AWS как основное, Backblaze B2 как резервное) rclone с cron выполняет синхронизацию по расписанию. Резервная копия обеспечивает независимость от специфических сбоев провайдера, атак шифровальщиков, нацеленных на IAM одного провайдера, или споров по выставленным счетам.
Архивы, готовые к восстановлению
Архив, который нельзя восстановить, — это просто медленное удаление. Задокументируйте путь восстановления для каждого уровня:
- Glacier Instant Retrieval: прямой GET, восстановление не нужно
- Glacier Flexible Retrieval:
RestoreObjectс Tier=Standard (3–5 часов) или Expedited (1–5 минут) - Glacier Deep Archive:
RestoreObjectсо Standard (12 часов) или Bulk (48 часов) - Azure Archive:
Set Blob Tierдо Hot/Cool, регидратация 15 часов
Практикуйте ежеквартально. Выберите случайный архивный объект, восстановите его, проверьте по хешу из манифеста и засеките время всего процесса. Непроверенные восстановления обнаруживаются в самый неподходящий момент — во время инцидента.
Разовые передачи для архивирования
Автоматический lifecycle справляется с плановыми задачами, но иногда нужно немедленно переместить конкретный пакет на 50 ГБ — файлы уволившегося сотрудника или материалы завершённого проекта. Для этого инструмент передачи с проверкой целостности лучше, чем редактирование политик lifecycle. HexaTransfer перемещает файлы до 10 ГБ со сквозным шифрованием AES-256-GCM и одноразовой ссылкой — это удобно для передачи архивов внешним юристам или правопреемнику без предоставления доступа ко всему архивному бакету.
Настройте политику lifecycle, автоматизируйте тегирование, направьте журналы аудита — и система будет работать сама. Раз в квартал просматривайте дашборд затрат и корректируйте пороги, если паттерн доступа изменился. Вот и всё, что нужно архивированию: однажды настроенное, оно требует меньше внимания, чем заказ кофе.
Попробуйте на hexatransfer.com — бесплатно, без аккаунта, до 10 ГБ.
Безопасная отправка больших файлов со сквозным шифрованием
Передавайте файлы до 10 ГБ бесплатно со сквозным шифрованием. Регистрация не требуется. Ваши файлы шифруются в браузере перед загрузкой — никто другой не может их прочитать.
Отправить файл