Что-то недавно произошло с одним из наших сегментов S3:
Я начал искать, откуда берутся все эти лишние вещи, но собранные мной показатели, похоже, не соответствуют тому, что происходит в CloudWatch (или нашему счету).
В ведре есть несколько различных ключевых префиксов («папок»), поэтому первое, что я сделал, - это попытаться выяснить, вносит ли какой-либо из них значительный вклад в это число, например:
aws s3 ls --summarize --human-readable --recursive s3://my-bucket/prefix
Однако ни один из префиксов, похоже, не содержал огромного количества данных, не более нескольких ГБ.
Я наконец попробовал бежать
aws s3 ls --summarize --human-readable --recursive s3://my-bucket
... и у меня общий размер ~ 25 ГБ. Я что-то делаю неправильно, пытаясь найти «размер папки», или что-то не понимаю? Как я могу найти, где используется все это дополнительное хранилище (и узнать, какой процесс работает безумно)?
это было прерванные многокомпонентные загрузки. По умолчанию S3 сохраняет каждую загруженную часть каждой неудачной многокомпонентной загрузки на неопределенный срок! В процессе произошел сбой, и он повторил попытку многокомпонентной загрузки без явной очистки сбойных передач.
Мы исправили это, временно включив управление версиями, установив правило жизненного цикла для удаления прерванных фрагментов многокомпонентной загрузки через 1 день, затем подождав день, снова отключив управление версиями после очистки фрагментов.
Существует обширная поддержка и документация о том, как решить эту проблему. Самый распространенный - перенос старых версий через определенное время.
Другой вариант - удалить неполные многокомпонентные загрузки, которые AWS поддерживает с 2016 г. (источник). Вы можете найти это в правилах жизненного цикла S3:
Я подозреваю, что кто-то загрузил много чего на ваш S3, а затем удалил его. Если у вас есть Управление версиями S3 включен вы, вероятно, увидите много удаленных файлов.
Начать с aws s3api list-object-versions
и проанализируйте вывод.
Если вы найдете ненужные старые версии, вы можете удалить их с помощью aws s3api delete-object ... --version-id ...
и немедленно избавьтесь от них.
В качестве альтернативы вы можете создать Политика жизненного цикла S3 который через определенное время автоматически удалит старые версии без возможности восстановления.
Надеюсь, это поможет :)