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

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

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

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

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

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

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

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


person heisthedon    schedule 24.08.2012    source источник


Ответы (5)


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

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

Если вы используете хранилище 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

person Jason Hogg - MSFT    schedule 31.08.2015

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

введите описание изображения здесь

Подробнее здесь < / а>

person Krzysztof Madej    schedule 18.09.2020

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

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

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

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

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

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

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

person Sarin    schedule 01.08.2019
comment
Управление жизненным циклом Azure может быть основано только на последней модификации, а не на времени последнего доступа, как это было поставлено под сомнение. - person schrom; 05.02.2020

Вы можете использовать блочный и страничный BLOB-объекты Properties.LastModifiedUtc, чтобы получить дату последнего изменения. С помощью Page или Block blob вам нужно будет использовать GetBlockBlobReference или GetPageBlobReference API вместе с FetchAttributes (), чтобы получить ссылку на большой двоичный объект, а затем вы можете найти LastModifiedUtc.

Например, с Block blob вот фрагмент кода:

CloudBlockBlob blockBlob = container_name.GetBlockBlobReference(uri.ToString());
blockBlob.FetchAttributes();
// blockBlob.Properties.LastModifiedUtc will return the last modified date for the blob.
person AvkashChauhan    schedule 24.08.2012
comment
lastmodifieddate - это не то же самое, что и lastaccesstime. так что я действительно не могу это использовать. - person heisthedon; 24.08.2012
comment
Как описано здесь, msdn.microsoft.com/en-us/library/windowsazure/ee773165 Последний доступ к BLOB-объекту может быть недоступен. Если вы можете добавить свои собственные метаданные и поддерживать свой BLOB-объект, вы обязательно сможете этого добиться. - person AvkashChauhan; 24.08.2012
comment
Есть довольно надуманный и довольно сложный способ добиться этого. Если вы включите аналитику хранилища в своей учетной записи хранения, а затем проанализируете журналы (доступные в контейнере больших двоичных объектов $ logs), чтобы определить, когда последний раз был доступ к большому двоичному объекту. - person Gaurav Mantri; 24.08.2012