Поделиться через


Инвентаризация BLOB-объектов службы хранилища Azure

Инвентаризация BLOB-объектов хранилища Azure предоставляет список контейнеров, BLOB-объектов, версий и моментальных снимков в вашей учетной записи хранения, а также соответствующих свойств. Он создает выходной отчет в значениях, разделенных запятыми (CSV) или в формате Apache Parquet на ежедневной или еженедельной основе. Отчет можно использовать для аудита состояния удержания, юридического удержания или шифрования содержимого учетной записи хранения либо для того, чтобы понять общий размер данных, их возраст, распределение по уровням или другие атрибуты данных. Вы также можете использовать Блоб-инвентаризацию для упрощения бизнес-процессов или ускорения выполнения заданий обработки данных, используя Блоб-инвентаризацию в качестве запланированной автоматизации API перечисления контейнеров и перечисления объектов. Правила инвентаризации BLOB-объектов позволяют фильтровать содержимое отчета по типу, префиксу или выбору свойств BLOB-объектов для включения в отчет.

Инвентаризация BLOB-объектов службы хранилища Azure доступна для следующих типов учетных записей хранения:

  • Стандартная версия общего назначения v2
  • Хранилище BLOB-объектов Premium класса
  • Хранилище данных типа BLOB

Функции инвентаризации

Список ниже описывает доступные в текущей версии функции и возможности инвентаризации BLOB-объектов в службе хранилища Azure.

  • Отчеты инвентаризации для блобов и контейнеров

    Вы можете создавать отчеты инвентаризации для объектов BLOB и контейнеров. Отчет о Blob-объектах может содержать базовые Blobs, моментальные снимки, длину содержимого, версии Blob и их свойства, такие как время создания и время последнего изменения. Пустые контейнеры не указаны в отчете учета BLOB-объектов. Отчет о контейнерах описывает контейнеры и связанные с ними свойства, такие как состояние политики неизменяемости, статус юридического удержания.

  • Настраиваемая схема

    Вы можете выбрать, какие поля отображаются в отчетах. Выберите из списка поддерживаемых полей. Этот список появится далее в этой статье.

  • Формат выходных данных CSV и Apache Parquet

    Отчет инвентаризации можно создать в формате CSV или Apache Parquet.

  • Файл манифеста и событие Azure Event Grid для отчета об остатках

    Файл манифеста и событие Azure Event Grid создаются для каждого отчета об инвентаризации. Они описаны далее в этой статье.

Включение инвентарных отчетов

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

Обновление политики инвентаризации

Если вы являетесь существующим пользователем инвентаризации BLOB-объектов службы хранилища Azure, который настроил инвентаризацию до июня 2021 года, вы можете начать использовать новые функции, загрузив политику, а затем сохраните политику обратно после внесения изменений. При перезагрузке политики новые поля в политике будут заполнены значениями по умолчанию. Эти значения можно изменить, если вы хотите. Кроме того, будут доступны следующие две функции.

  • Теперь контейнер назначения поддерживается для каждого правила, а не только в рамках одной политики.

  • Файл манифеста и событие Сетки событий Azure теперь создаются для каждого правила вместо каждой политики.

Политика инвентаризации

Отчет инвентаризации настраивается путем добавления политики инвентаризации с одним или несколькими правилами. Политика инвентаризации — это коллекция правил в документе JSON.

{
  "enabled": true,
  "rules": [
  {
    "enabled": true,
    "name": "inventoryrule1",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  },
  {
    "enabled": true,
    "name": "inventoryrule2",
    "destination": "inventory-destination-container",
    "definition": {. . .}
  }]
}

Просмотрите JSON для политики инвентаризации, выбрав вкладку "Представление кода " в разделе инвентаризации BLOB-объектов на портале Azure.

Имя параметра Тип параметра Примечания. Обязательно?
Активирован булевый Используется для отключения всей политики. Если установлено значение true, поле включения уровня правила переопределяет этот параметр. При отключении инвентаризация для всех правил будет отключена. Да
правила Массив объектов правил Для каждой политики должно существовать хотя бы одно правило. Для каждой политики поддерживаются до 100 правил. Да

Правила инвентаризации

Правило записывает условия фильтрации и выходные параметры для создания отчета инвентаризации. Каждое правило создает отчет инвентаризации. Правила могут иметь перекрывающиеся префиксы. Блоб может отображаться в нескольких списках запасов в зависимости от правил.

Каждое правило в политике имеет несколько параметров.

Имя параметра Тип параметра Примечания. Обязательно?
имя струна Имя правила может содержать до 256 буквенно-цифровых символов с учетом регистра. Имя должно быть уникальным в политике. Да
Активирован булевый Флаг, позволяющий включить или отключить правило. Значение по умолчанию — true Да
Определение Определение правила управления запасами JSON Каждое определение состоит из набора фильтров правил. Да
пункт назначения струна Целевой контейнер, в котором создаются все файлы инвентаризации. Целевой контейнер должен уже существовать.

Флаг глобального инвентаризации BLOB-объектов имеет приоритет над включенным параметром в правиле.

Определение правила

Имя параметра Тип параметра Примечания. Обязательно
фильтры JSON (формат обмена данными JavaScript) Фильтры определяют, является ли блоб или контейнер частью запаса. Да
формат струна Определяет выходные данные файла инвентаризации. Допустимые значения: csv (для формата CSV) и parquet (для формата Apache Parquet). Да
тип объекта струна Указывает, является ли это правилом инвентаризации блобов или контейнеров. Допустимые значения — blob и container. Да
планирование струна График, по которому будет выполнено это правило. Допустимые значения — daily и weekly. Да
schemaFields Массив JSON Список полей схемы, которые должны быть частью инвентаризации. Да

Фильтры для правил

Для кастомизации отчета инвентаризации объектов BLOB доступны несколько фильтров.

Имя фильтра Тип фильтра Примечания. Обязательно?
типы BLOB Массив предопределенных значений перечислимого типа Допустимыми значениями являются blockBlob и appendBlob для учетных записей с включенными иерархическими пространствами имен, а также blockBlob, appendBlob, и pageBlob для других учетных записей. Это поле не применимо для инвентаризации в контейнере (objectType: container). Да
время создания Номер Указывает количество дней, в течение которых должен был быть создан файловый объект. Например, значение 3 включает в отчет только те большие двоичные объекты, которые были созданы за последние три дня. нет
префиксMatch Массив до 10 строк для сопоставления префиксов. Если вы не определяете prefixMatch или предоставляете пустой префикс, правило применяется ко всем объектам BLOB в учетной записи хранения. Префикс должен быть префиксом имени контейнера или именем контейнера. Например, container, container1/foo. нет
исключить префикс Массив, содержащий до 10 строк, предназначенных для исключения префиксов. Указывает пути объектов блоб, которые следует исключить из отчета инвентаризации.

excludePrefix должно быть префиксом имени контейнера или именем контейнера. Пустое excludePrefix означает, что все блобы с именами, соответствующими любой строке prefixMatch, будут перечислены.

Если вы хотите включить определенный префикс, но исключить из него определенное подмножество, можно использовать фильтр excludePrefix. Например, если вы хотите включить все оболочки под container-a, кроме тех, которые находятся в папке container-a/folder, то prefixMatch должно быть установлено в container-a, а excludePrefix должно быть установлено в container-a/folder.
нет
включить снимки булевый Определяет, следует ли включать снимки состояния системы в инвентаризацию. По умолчанию — false. Это поле не применимо для инвентаризации в контейнере (objectType: container). нет
включить версии блобов булевый Указывает, следует ли включать версии объектов BLOB в инвентаризацию. По умолчанию — false. Это поле не применимо для инвентаризации в контейнере (objectType: container). нет
включитьУдаленные булевый Указывает, должна ли инвентаризация включать удаленные BLOB-объекты. По умолчанию — false. В учетных записях с иерархическим пространством имен этот фильтр включает папки, а также блобы, находящиеся в состоянии мягкого удаления.

Только папки и файлы (blobs), которые явно удаленные, отображаются в отчетах. Дочерние папки и файлы, удаленные в результате удаления родительской папки, не включаются в отчет.
нет

Просмотрите JSON для правил инвентаризации, выбрав вкладку Представление кода в разделе инвентаризации Blob на портале Azure. Фильтры задаются в определении правила.

{
  "destination": "inventory-destination-container",
  "enabled": true,
  "rules": [
  {
    "definition": {
      "filters": {
        "blobTypes": ["blockBlob", "appendBlob", "pageBlob"],
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"],
        "excludePrefix": ["inventorytestcontainer10", "etc/logs"],
        "includeSnapshots": false,
        "includeBlobVersions": true,
      },
      "format": "csv",
      "objectType": "blob",
      "schedule": "daily",
      "schemaFields": ["Name", "Creation-Time"]
    },
    "enabled": true,
    "name": "blobinventorytest",
    "destination": "inventorydestinationContainer"
  },
  {
    "definition": {
      "filters": {
        "prefixMatch": ["inventorytestcontainer1", "inventorytestcontainer2/abcd", "etc"]
      },
      "format": "csv",
      "objectType": "container",
      "schedule": "weekly",
      "schemaFields": ["Name", "HasImmutabilityPolicy", "HasLegalHold"]
    },
    "enabled": true,
    "name": "containerinventorytest",
    "destination": "inventorydestinationContainer"
    }
  ]
}

Настраиваемые поля схемы, поддерживаемые для учета blob-объектов

Замечание

Столбец Data Lake Storage отображает поддержку в учетных записях с включенным функцией иерархического пространства имен.

Поле Служба хранилища объектов Blob (поддержка по умолчанию) Хранилище данных Data Lake
Имя (обязательно) Да Да
Creation-Time Да Да
Last-Modified Да Да
ВремяПоследнегоДоступа1 Да Да
ETag Да Да
Длина содержимого Да Да
Тип контента Да Да
Кодировка содержимого (Content-Encoding) Да Да
Язык содержимого Да Да
Контент-CRC64 Да Да
Content-MD5; Да Да
Управление кэшем Да Да
Cache-Disposition Да Да
Тип Blob Да Да
AccessTier Да Да
ВремяИзмененияУровняДоступа Да Да
LeaseStatus Да Да
LeaseState Да Да
Зашифровано сервером Да Да
КлючПредоставленныйКлиентомSHA256 Да Да
Метаданные Да Да
Expiry-Time Нет Да
hdi_isfolder Нет Да
Владелец Нет Да
Группа Нет Да
Разрешения Нет Да
Список ACL Нет Да
Моментальный снимок (доступный и обязательный при выборе включения моментальных снимков в отчет) Да Да
Удалено Да Да
DeletedId Нет Да
Удаленное время Нет Да
Оставшиеся дни хранения Да Да
VersionId (доступно и обязательно при включении версий BLOB-объектов в отчет) Да Нет
IsCurrentVersion (доступно и необходимо, если вы решили включить версии BLOB в отчет) Да Нет
КоличествоТегов Да Нет
Метки Да Нет
Id копии Да Да
Копировать источник Да Да
Статус копирования Да Да
CopyProgresss Да Да
Время завершения копирования Да Да
ОписаниеСтатусаКопирования Да Да
Политика Неизменяемости До Даты Да Да
НеизменяемостьPolicyMode Да Да
LegalHold Да Да
Приоритет повторного гидрирования Да Да
ArchiveStatus Да Да
Область шифрования Да Да
Инкрементная копия Да Да
x-ms-blob-sequence-number Да Нет

1 Отключено по умолчанию. При необходимости включите отслеживание времени доступа.

Настраиваемые поля схемы, поддерживаемые для инвентаризации контейнеров

Замечание

Столбец Data Lake Storage отображает поддержку в учетных записях с включенным функцией иерархического пространства имен.

Поле Служба хранилища объектов Blob (поддержка по умолчанию) Хранилище данных Data Lake
Имя (обязательно) Да Да
Last-Modified Да Да
ETag Да Да
LeaseStatus Да Да
LeaseState Да Да
Длительность аренды Да Да
Метаданные Да Да
PublicAccess Да Да
ОбластьШифрованияПоУмолчанию Да Да
Запретить переопределение области шифрования Да Да
HasImmutabilityPolicy Да Да
Находится под юридическим запретом Да Да
Неизменяемое хранилище с включённой версификацией Да Да
Отображается как "Удален" только если выбрана опция включения удаленных контейнеров. Да Да
Версия (отображается только в том случае, если включены удаленные контейнеры) Да Да
DeletedTime (будет отображаться только в том случае, если выбраны удаленные контейнеры) Да Да
Оставшиеся дни до истечения срока хранения (будет отображаться только в том случае, если выбраны удаленные контейнеры) Да Да

Запуск инвентаризации

Если вы настраиваете правило для ежедневного выполнения, оно будет выполняться каждый день. Если вы настраиваете правило для еженедельного запуска, оно будет запланировано на каждую неделю в воскресенье по времени UTC.

Большинство инвентаризаций выполняется в течение 24 часов. Для учетных записей с включенным иерархическим пространством имен выполнение может занять до двух дней, и в зависимости от количества обрабатываемых файлов выполнение может не завершиться в течение двух дней. Максимальное время выполнения, после которого произойдет сбой, составляет шесть дней.

Запуски не перекрываются, поэтому один запуск должен завершиться до начала другого запуска того же правила. Например, если правило планируется выполнять ежедневно, но выполнение предыдущего дня этого же правила по-прежнему выполняется, новое выполнение не будет инициировано в тот день. Правила, запланированные для еженедельного запуска, будут выполняться каждую воскресенье независимо от того, успешно ли выполнен предыдущий запуск или завершится сбоем. Если выполнение не завершено успешно, проверьте последующие запуски, чтобы узнать, завершены ли они перед обращением в службу поддержки. Производительность выполнения задания может варьироваться, поэтому, если какое-то задание не завершено, возможно, что последующие задания будут завершены.

Политики инвентаризации полностью считываются или записываются. Частичное обновление не поддерживается. Правила инвентаризации оцениваются ежедневно. Таким образом, если вы измените определение правила, но правила политики уже были оценены в течение этого дня, обновления не будут оцениваться до следующего дня.

Событие инвентаризации завершено

Событие BlobInventoryPolicyCompleted создается при завершении выполнения инвентаризации для правила. Это событие также происходит, если попытка инвентаризации заканчивается ошибкой пользователя до её начала. Например, недопустимая политика или ошибка, возникающая, когда целевой контейнер не присутствует, активирует событие. В следующем примере JSON показано событие BlobInventoryPolicyCompleted.

{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/BlobInventory/providers/Microsoft.EventGrid/topics/BlobInventoryTopic",
  "subject": "BlobDataManagement/BlobInventory",
  "eventType": "Microsoft.Storage.BlobInventoryPolicyCompleted",
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "data": {
    "scheduleDateTime": "2021-05-28T03:50:27Z",
    "accountName": "testaccount",
    "ruleName": "Rule_1",
    "policyRunStatus": "Succeeded",
    "policyRunStatusMessage": "Inventory run succeeded, refer manifest file for inventory details.",
    "policyRunId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "manifestBlobUrl": "https://testaccount.blob.core.windows.net/inventory-destination-container/2021/05/26/13-25-36/Rule_1/Rule_1-manifest.json"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2021-05-28T15:03:18Z"
}

Схема события BlobInventoryPolicyCompleted описана в таблице ниже.

Поле Тип Описание
запланированное время струна Время, назначенное для правила инвентаризации.
Имя аккаунта струна Имя учетной записи хранения.
название правила струна Название правила.
policyRunStatus струна Состояние выполнения инвентаризации. Возможные значения: Succeeded, PartiallySucceededи Failed.
сообщение_о_статусе_запуска_политики струна Сообщение о статусе выполнения инвентаризации.
policyRunId струна Идентификатор выполнения политики для запуска инвентаризации.
manifestBlobUrl струна URL-адрес blob для файла манифеста для запуска инвентаризации.

Выходные данные инвентаризации

Каждое правило инвентаризации создает набор файлов в указанном контейнере назначения инвентаризации для этого правила. Выходные данные инвентаризации создаются по следующему пути: https://<accountName>.blob.core.windows.net/<inventory-destination-container>/YYYY/MM/DD/HH-MM-SS/<ruleName где:

  • accountName — это имя учетной записи хранения BLOB-объектов Azure.
  • inventory-destination-container — это целевой контейнер, указанный в правиле инвентаризации.
  • ГгГГ/ММ/ДД/HH-MM-SS — это время, когда инвентаризация начала выполняться.
  • ruleName — это имя правила инвентаризации.

Файлы инвентаризации

Каждый запуск инвентаризации для правила создает следующие файлы:

  • Файл инвентаризации: Запуск инвентаризации для правила создает CSV-файл или файл в формате Apache Parquet. Каждый такой файл содержит соответствующие объекты и их метаданные.

    Это важно

    Начиная с октября 2023 года инвентаризация будет производить несколько файлов, если количество объектов большое. Дополнительные сведения см. в разделе "Вопросы и ответы о нескольких выходных данных файла инвентаризации".

    Отчеты в формате Apache Parquet содержат даты в следующем формате: timestamp_millis [number of milliseconds since 1970-01-01 00:00:00 UTC]. В формате CSV-файла первая строка всегда является строкой схемы. На следующем рисунке показан CSV-файл инвентаризации, открытый в Microsoft Excel.

    Снимок экрана: CSV-файл инвентаризации, открытый в Microsoft Excel

    Это важно

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

  • Файл контрольной суммы: Файл контрольной суммы содержит контрольную сумму MD5 содержимого файла manifest.json. Имя файла контрольной суммы .<ruleName>-manifest.checksum Создание файла контрольной суммы означает завершение выполнения правила инвентаризации.

  • Файл манифеста: Файл manifest.json содержит сведения о файлах инвентаризации, созданных для этого правила. Имя файла <ruleName>-manifest.json. Этот файл также записывает определение правила, предоставленное пользователем, и путь к инвентаризации для этого правила. В следующем json показано содержимое примера файла manifest.json.

    {
    "destinationContainer" : "inventory-destination-container",
    "endpoint" : "https://testaccount.blob.core.windows.net",
    "files" : [
      {
        "blob" : "2021/05/26/13-25-36/Rule_1/Rule_1.csv",
        "size" : 12710092
      }
    ],
    "inventoryCompletionTime" : "2021-05-26T13:35:56Z",
    "inventoryStartTime" : "2021-05-26T13:25:36Z",
    "ruleDefinition" : {
      "filters" : {
        "blobTypes" : [ "blockBlob" ],
        "includeBlobVersions" : false,
        "includeSnapshots" : false,
        "prefixMatch" : [ "penner-test-container-100003" ]
      },
      "format" : "csv",
      "objectType" : "blob",
      "schedule" : "daily",
      "schemaFields" : [
        "Name",
        "Creation-Time",
        "BlobType",
        "Content-Length",
        "LastAccessTime",
        "Last-Modified",
        "Metadata",
        "AccessTier"
      ]
    },
    "ruleName" : "Rule_1",
    "status" : "Succeeded",
    "summary" : {
      "objectCount" : 110000,
      "totalObjectSize" : 23789775
    },
    "version" : "1.0"
    }
    

    Этот файл создается при запуске. Поле status этого файла установлено в Pending до завершения выполнения. После завершения выполнения это поле имеет состояние завершения (например, Succeeded или Failed).

Цены и выставление счетов

Цены на инвентаризацию зависят от количества блобов и контейнеров, сканируемых в течение расчетного периода. На странице цен на хранилище BLOB-объектов Azure отображается цена на один миллион отсканированных объектов. Например, если цена за сканирование одного миллиона объектов составляет $0.003, ваша учетная запись содержит в себе три миллиона объектов, и вы создаете четыре отчета в месяц, то ваш счет будет 4 * 3 * $0.003 = $0.036.

После создания файлов инвентаризации будет взиматься дополнительная плата за хранение, чтение и запись этих файлов в учетной записи.

Если правило содержит префикс, который перекрывается префиксом любого другого правила, то один и тот же блок данных может отображаться в нескольких отчетах инвентаризации. В этом случае счета выставляются за оба экземпляра. Например, предположим, что prefixMatch для элемента одного правила задано ["inventory-blob-1", "inventory-blob-2"]значение , а prefixMatch для элемента другого правила задано ["inventory-blob-10", "inventory-blob-20"]значение . Объект с именем inventory-blob-200 отображается в обоих отчетах инвентаризации.

Моментальные снимки и версии блока также учитываются при выставлении счетов, даже если вы задали includeSnapshots и includeVersions фильтры false. Эти значения фильтра не влияют на выставление счетов. Их можно использовать только для фильтрации отображаемых в отчете элементов.

Дополнительные сведения о ценах на инвентаризацию BLOB-объектов в хранилище Azure см. в разделе Цены на хранилище BLOB-объектов Azure.

Поддержка функций

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Поддержка функций Blob Storage в учетных записях хранения Azure, чтобы оценить поддержку этой функции.

Известные проблемы и ограничения

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

Количество объектов отчета инвентаризации и размер данных не следует сравнивать с выставлением счетов

Отчет инвентаризации не содержит метаданных, системных журналов и свойств, поэтому он не должен сравниваться с выставленным количеством объектов и размером данных для учетной записи хранения.

Выполнение заданий инвентаризации занимает больше времени для выполнения в определенных случаях

Задание инвентаризации может занять больше времени в следующих случаях:

  • Добавляется большой объем новых данных

  • Правило или набор правил выполняется в первый раз

    Выполнение инвентаризации может занять больше времени, чем последующие проверки.

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

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

  • Нет возможности создать отчет ретроспективно для определенной даты.

Задания инвентаризации не могут записывать отчеты в контейнеры с политикой репликации объектов

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

Инвентаризация и неизменяемое хранилище

Политику инвентаризации нельзя настроить в учетной записи, если в этой учетной записи включена поддержка неизменяемости на уровне версии или включена поддержка неизменяемости на уровне версии в целевом контейнере, определенном в политике инвентаризации.

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

Если контейнер или каталог удаляется с поддержкой мягкого удаления, то контейнер или каталог и все его содержимое помечаются как мягко удалённые. Однако в отчете об инвентаризации отображаются только контейнер или каталог (как объект нулевой длины), а не мягко удаленные большие двоичные объекты в этом контейнере или каталоге, даже если поле политики установлено в includeDeletedtrue. Это может привести к разнице между метриками емкости, получаемыми на портале Azure, и тем, что сообщается отчетом инвентаризации.

В отчетах отображаются только BLOB, которые явно удалены. Таким образом, чтобы получить полный список всех мягко удаленных BLOBов (каталога и всех дочерних BLOBов), перед удалением самого каталога рабочие процессы должны удалить каждый BLOB в каталоге.

Дальнейшие шаги