Когда агенты работают на разных компьютерах, им нужно общее место для файлов, чтобы один положил, а другой забрал. Для этого часто берут S3.
Что это такое
S3 — это облачное хранилище файлов. Вы создаёте бакет, это что-то вроде отдельного диска под проект, и складываете туда файлы. Агент или программа заходит в бакет по ключам доступа, примерно как по логину и паролю.
Придумал его Amazon, но так же работают Yandex Object Storage, Cloud.ru, Selectel, VK Cloud. Код везде один, при переезде меняются только адрес хранилища и ключи.( можно поставить свое решение ,но часто это будет дороже)
Зачем он агентам
1. Общая папка для всех машин
У меня агенты на Mac, Windows и VPS. Допустим, ролик отрендерился на винде, а проверить его надо на маке. Без общего места приходится кидать файл в телегу или копировать руками. С бакетом каждый агент кладёт результат туда, а следующий оттуда же его забирает.
2. Большие файлы в Telegram
Бот может отправить файл не больше 50 МБ, а готовый ролик часто весит больше. В таком случае бот загружает ролик в S3 и присылает временную ссылку, например на час. Файл качается прямо из хранилища, а посторонние в бакет не попадут.
3. Агенты не затирают файлы друг друга
Если два агента сохранят файл под одним именем, на обычном диске второй молча перезапишет первого. В S3 можно сохранять с условием «только если такого файла ещё нет». Тогда второй агент получит ошибку, а работа первого останется целой. Поддерживает ли это ваш провайдер, смотрите в документации. У Yandex Object Storage поддержка есть.
4. Видно, что задача готова
Правило простое: агент сначала заливает все файлы, а последним кладёт короткий список, например
manifest.json. Если список появился, всё загружено и можно забирать. Если списка нет, агент ещё грузит или упал на середине.5. Старые файлы удаляются сами
В бакете можно включить правило «удалять файлы старше 90 дней». Тогда старые рендеры не копятся и платить за них не приходится.
Сколько стоит
300 ГБ в Yandex или Cloud.ru обходятся примерно в 500–800 руб. в месяц с НДС.
Когда не нужен
Если все агенты крутятся на одном компьютере, хватит обычной папки. S3 нужен, когда машин две и больше или файлы надо отдавать людям по ссылке.
