Прямой метод получения размера папки в Amazon S3 отсутствует (поскольку папки на самом деле не существуют).
Вот несколько идей ...
Периоды c Лямбда-функция для вычисления общего числа
Создание Amazon CloudWatch Event для запуска AWS Лямбда-функции с указанными c интервалами. Функция Lambda будет перечислять все объекты с заданной Prefix
(фактически папка) и суммировать размеры. Если оно превышает 100 ТБ, функция Lambda может запустить процесс очистки.
Однако, если в этой папке тысячи файлов, это будет несколько медленным. Каждый вызов API может получить только 1000 объектов. Таким образом, для подсчета итога может потребоваться много вызовов, и это будет выполняться каждый интервал проверки.
Сохранение промежуточного итога
Настройка События Amazon S3 для запуска AWS лямбда-функции всякий раз, когда новый объект создается с этим Prefix
. Лямбда-функция может извлекать приращение промежуточной суммы в базе данных. Если общий объем превышает 100 ТБ, функция Lambda может запустить процесс очистки.
Какую базу данных использовать? Amazon DynamoDB будет самым быстрым и поддерживает функцию «увеличения», но вы можете быть хитрым и просто использовать AWS System Manager Parameter Store. Это может вызвать проблемы, если новые объекты создаются быстро, потому что нет блокировки. Поэтому, если файлы приходят каждые несколько секунд или быстрее, обязательно используйте DynamoDB.
Замедленное движение
Вы не указали, как часто этот предел в 100 ТБ может быть срабатывает. Если это произойдет только через несколько дней, вы можете использовать Amazon S3 Inventory , который предоставляет ежедневный CSV, содержащий список объектов в корзине. Это решение, конечно, не будет применимо, если предел в 100 ТБ достигнут менее чем за день.