Удалите содержимое хранилища BLOB-объектов Azure, которое не затрагивается в течение определенного периода времени.

В основном разработанное мной приложение позволяет пользователям загружать содержимое и храниться в хранилище BLOB-объектов Azure.

Поскольку характер контента предназначен для быстрого обмена между пользователями, многие материалы быстро становятся нетронутыми по прошествии определенного времени. Но для некоторого содержимого можно использовать снова и снова.

Чтобы остановить беспрецедентный рост размера хранилища больших двоичных объектов, я планирую написать инструмент, который в основном находит все большие двоичные объекты, которые не используются в течение определенного периода времени, и удаляет их из хранилища.

Если это была стандартная файловая система, я мог бы использовать "Время последнего доступа", чтобы указать, когда последний раз использовался файл. Тем не менее, я не могу найти похожее свойство большого двоичного объекта для определения времени последнего доступа.

Так кто-нибудь сталкивался с такой ситуацией, что было бы лучшим способом для достижения этой цели? Или я слишком обеспокоен этим?

Любые отзывы или предложения с благодарностью.

Заранее благодарю.

3 ответа

Я могу видеть только два способа справиться с этим:

  1. Передний доступ к большому двоичному объекту так, что они должны обратиться к службе, чтобы получить URL большого двоичного объекта с подписью SAS. Таким образом, вы можете подсчитывать и отслеживать, какие двоичные объекты получают доступ. Удалите более старые капли, которые через некоторое время не имеют доступа. Для этого необходимо отключить публичный доступ, чтобы люди не могли просто обойти вашу подпись SAS.
  2. Включите аналитику хранилища и отслеживайте запросы GET. Например, вам придется анализировать все обращения к GET за месяц ($logs обновляются ежечасно) и группировать по ресурсам. Если бы вы автоматизировали это, это не было бы слишком ужасно. Это даст вам список всех ресурсов, к которым был получен доступ.

Теперь это доступно через Lifecyle Managment в Центральной Франции, Восточной Канаде и Центральной Канаде, так как функция находится в предварительной версии.

Подробнее здесь

Мне было интересно, нашел ли кто-нибудь для этого нестандартное решение?

Мы могли бы проанализировать наши журналы и добавить дополнительное свойство LastAccessed, но это просто кажется большой работой / накладными расходами для того, что в любом случае нужно большинству пользователей blob.

Если вы используете хранилище BLOB-объектов, то лучше всего следовать предложенному Гауравом подходу. Смотрите здесь для начала работы:

https://azure.microsoft.com/en-us/documentation/articles/storage-analytics/.

Обратите внимание, что в наших клиентских библиотеках.NET есть поддержка парсинга файлов журналов - вы можете увидеть демонстрацию этого в наших модульных тестах клиентской библиотеки:

https://github.com/Azure/azure-storage-net/search?utf8=%E2%9C%93&q=ListLogs

Теперь это стало намного проще благодаря поддержке хранилища BLOB-объектов Azure для управления жизненным циклом.

Изменить: как уже указывалось, управление жизненным циклом хранилища BLOB-объектов позволяет настраивать правила только на основе даты последнего изменения, а не даты последнего доступа.

Управление жизненным циклом хранилища BLOB-объектов Azure

Управление жизненным циклом хранилища BLOB-объектов Azure предлагает обширную политику на основе правил для учетных записей хранилища GPv2 и BLOB-объектов. Используйте политику для перевода данных на соответствующие уровни доступа или для истечения срока действия в конце жизненного цикла данных.

Политика управления жизненным циклом позволяет:

  • Перевод больших двоичных объектов на более холодный уровень хранилища (горячий для охлаждения, горячий для архивации или холодный для архивирования) для оптимизации производительности и затрат
  • Удалять капли в конце их жизненного цикла
  • Определите правила, которые будут запускаться один раз в день на уровне учетной записи хранения. Применить правила к контейнерам или подмножеству больших двоичных объектов (используя префиксы в качестве фильтров)

Вы можете использовать блок и блоб страницы Properties.LastModifiedUtc, чтобы получить дату последнего изменения. Для страницы или блоба Blob вам потребуется использовать API GetBlockBlobReference или GetPageBlobReference вместе с FetchAttributes() для получения ссылки на блоб, а затем вы можете искать LastModifiedUtc.

Например, для блочного блоба приведен фрагмент кода:

CloudBlockBlob blockBlob = container_name.GetBlockBlobReference(uri.ToString());
blockBlob.FetchAttributes();
// blockBlob.Properties.LastModifiedUtc will return the last modified date for the blob.
Другие вопросы по тегам