30 вересня 2026 р. · 5 хв читання
Як автоматично видаляти файли через кілька днів у S3, R2 і B2
Тимчасові файли накопичуються: знімки екрана для рев’ю, збірка для тестувальника, файл для клієнта. Правила життєвого циклу дають бакету змогу прибирати за собою. Секрет у тому, щоб визначати термін життя файлу під час вивантаження, кладучи його під префікс, для якого є правило.
Схема з префіксами
Створіть по одному правилу для кожного терміну, кожне зі своєю папкою:
tmp/1d/видаляє через 1 деньtmp/7d/видаляє через 7 днівtmp/30d/видаляє через 30 днів
Вивантажте файл у tmp/7d/2026/09/report.pdf, і за тиждень його не стане. Усе, що поза tmp/, ніколи не зачіпається.
Cloudflare R2
- Відкрийте Settings бакета, знайдіть Object lifecycle rules і виберіть Add rule.
- Дайте правилу назву, наприклад
expire-7d, і задайте префіксtmp/7d/. - Виберіть видалення об’єктів через 7 days після вивантаження й збережіть.
Або через Wrangler:
npx wrangler r2 bucket lifecycle add your-bucket expire-7d tmp/7d/ --expire-days 7Amazon S3
- Відкрийте бакет, перейдіть до Management і виберіть Create lifecycle rule.
- Назвіть правило й виберіть Limit the scope using filters із префіксом
tmp/7d/. - У діях виберіть Expire current versions of objects і введіть 7 днів. У бакеті з версіонуванням також остаточно видаляйте неактуальні версії.
Через AWS CLI:
{
"Rules": [
{
"ID": "expire-7d",
"Status": "Enabled",
"Filter": { "Prefix": "tmp/7d/" },
"Expiration": { "Days": 7 }
}
]
}
aws s3api put-bucket-lifecycle-configuration --bucket your-bucket \
--lifecycle-configuration file://lifecycle.json
Ця команда замінює всю конфігурацію життєвого циклу бакета, тож додайте до неї й ті правила, що вже існують.
Backblaze B2
У Lifecycle Settings бакета виберіть власні правила й додайте правило з префіксом назви файлу tmp/7d/. B2 працює у два етапи: days from uploading to hiding (днів від вивантаження до приховування) і days from hiding to deleting (днів від приховування до видалення). Задайте 6 і 1, щоб файл зникав приблизно через тиждень.
Коли саме видаляються файли?
Правила життєвого циклу виконуються у фоновому режимі, зазвичай раз на добу. Amazon S3 рахує від часу вивантаження, округлює до наступної півночі за UTC, а потім ставить об’єкт у чергу на видалення; платити за нього ви перестаєте, щойно спливе термін. На практиці файл може лишатися доступним ще приблизно добу після своєї дати. Якщо посилання має перестати працювати в точно визначений час, використайте натомість підписану URL-адресу.
Поширені запитання
Чи видаляють правила життєвого циклу файли, коли мій комп’ютер вимкнено?
Так. Правила зберігаються в бакеті й виконуються на боці провайдера, тож з вашого боку нічого не має бути запущено.
Чи можна видаляти файли через кілька годин, а не днів?
Ні. Правила життєвого циклу працюють лише з цілими днями. Для посилань, які мають перестати працювати за кілька годин, залиште файл приватним і поділіться підписаною URL-адресою.
Чи видалить правило життєвого циклу файли поза префіксом?
Ні. Правило з фільтром за префіксом стосується лише ключів, що починаються з цього префікса. Правило без фільтра діє на весь бакет, тож завжди задавайте фільтр.